Как исправить ошибку SockJS / STOMP за VPN в Spring Boot? - PullRequest
0 голосов
/ 17 апреля 2019

Это происходит, когда пользователи или я обращаются к моей веб-странице, на которой есть веб-сокеты. Я использую SockJS и STOMP. У меня есть следующие случаи ошибок, когда сервер подключен к VPN:

Сервер не подключен к VPN

WebSockets отлично работает

Сервер подключен к VPN

WebSockets отлично работает через localhost: 8080 .

WebSockets не работает через mydomain.com , но если я подожду некоторое время, он заработает (например, через 2 минуты).

ОШИБКА:

enter image description here

enter image description here

Это мои зависимости и способ настройки веб-сокетов:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>sockjs-client</artifactId>
    <version>1.3.0</version>
</dependency>

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>stomp-websocket</artifactId>
    <version>2.3.3-1</version>
</dependency>

.

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

private static final String SOCKET_VERSION = "https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.js";


@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
    config.enableSimpleBroker("/suscribers");
    config.setApplicationDestinationPrefixes("/projects", "/tomcatlog", "/modules");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/sockets").withSockJS().setClientLibraryUrl(SOCKET_VERSION);
    }

}

.

function connect() {
    loading(true);
    var socket = new SockJS('/sockets');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        console.log('Perfect!');
        stompClient.subscribe('/suscribers/projects', function (data) {
            var projects= JSON.parse(data.body);
            ....
            loading(false);
        });
        ...
    }, function(error){
        console.log(error);
        setTimeout(function(){ console.log('Reconnecting...');
            connect(); 
        }, 5000);
    });
    loading(false);
};

Почему веб-сокет не работает правильно (если вы не ждете несколько минут) через домен, когда сервер подключен к VPN?

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