Это происходит, когда пользователи или я обращаются к моей веб-странице, на которой есть веб-сокеты. Я использую SockJS и STOMP. У меня есть следующие случаи ошибок, когда сервер подключен к VPN:
Сервер не подключен к VPN
WebSockets отлично работает
Сервер подключен к VPN
WebSockets отлично работает через localhost: 8080 .
WebSockets не работает через mydomain.com , но если я подожду некоторое время, он заработает (например, через 2 минуты).
ОШИБКА:
Это мои зависимости и способ настройки веб-сокетов:
<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?