Невозможно подключить websocket через servlet.context.path - PullRequest
0 голосов
/ 04 июля 2019

У меня есть приложение весенней загрузки (2.0.5.RELEASE), которое работает на порту 8989. Приложение отправляет сообщения журнала через websocket клиенту. я создал клиент javascript, который подключается к веб-сокету и добавляет сообщения в текстовую область html. Этот клиент находится в папке ресурса \ static \ js приложения. Это прекрасно работает, когда я не использую servet.context.path. Есть ли способ, я могу решить это с контекстным путем. Я пропускаю какой-то конфигурационный параметр? Буду очень признателен за вашу помощь в этом отношении.

Application.properties

server.port=8989
server.servlet.contextPath=/DemoService/webresources/test/

Конфигурация Websocket упоминается ниже:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    /**
     * Register Stomp endpoints: the url to open the WebSocket connection.
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {

        // Register the "/websocket" endpoint, enabling the SockJS protocol.
        // SockJS is used (both client and server side) to allow alternative
        // messaging options if WebSocket is not available.
        registry.addEndpoint("/websocket").setAllowedOrigins("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");
        registry.setApplicationDestinationPrefixes("/app");
    }

}

Клиент выглядит так,

 $(window).ready(function() {
    connect();
});

function connect() {
//  var socket = new SockJS('/websocket');
    var socket = new SockJS('/DemoService/webresources/test/websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function(frame) {
        stompClient.subscribe('/topic/pushlognotification', function(
                notification) {
            var txt = $('#textArea');
            txt.val(txt.val() + "\n" + "\n" + notification);
            txt.scrollTop(txt[0].scrollHeight);
        });
    });
}

HTML-страница:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Messages</title>
</head>
<body>
<textarea type="text"  id="textArea" placeholder="Messages..." rows="15" cols="60"></textarea>

<script src='js/jquery.min.js'></script>
<script src="js/index.js"></script>
<script src="/webjars/sockjs-client/sockjs.min.js"></script>
<script src="/webjars/stomp-websocket/stomp.min.js"></script>
</body>
</html>

1 Ответ

0 голосов
/ 12 июля 2019

нашел решение после проверки вывода консоли.

HTML-код не может найти зарегистрированные файлы через src, например, 'js / jquery.min.js' и т. Д. Из-за настроенных контекстных путей. Решением является либо добавление контекстного пути ко всем источникам, как показано ниже.

или дать "." знак

это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...