Мы развернули наше веб-приложение Spring MVC на Windows Server 2012. Наше веб-приложение использует Spring Websockets для обновлений с помощью stomp.js и sock.js.
Наша конфигурация websocket:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/calcApp");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/add").setAllowedOrigins("*").withSockJS();
}
}
Websocket работает на localhost, а журналы следующие:
Opening Web Socket...
Web Socket Opened...
>>> CONNECT
accept-version:1.1,1.0
heart-beat:10000,10000
<<< CONNECTED
version:1.1
heart-beat:0,0
user-name:admin
connected to server undefined
>>> SUBSCRIBE
id:sub-0
destination:/topic/resident
...
Как ни странно, это не работает, когда я ввожу внешний IP, на той же машине и в браузере:
Opening Web Socket...
WebSocket connection to 'ws://192.168.5.50:8080/autopark/add/629/i148hb1c/websocket' failed: WebSocket is closed before the connection is established.
Whoops! Lost connection to undefined
Мы подумали, что для внешнего доступа есть какой-то брандмауэр, и полностью его отключили:
Но это не решило нашу проблему.
Как мы можем решить эту проблему?