我有一个STOMP客户端和Spring后端,代码在本地时工作正常,但在部署到服务器时不工作,无法连接到服务器。
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/tracker").setAllowedOrigins("*");
}
}
Javascript客户端发起连接:var socket = new WebSocket("ws://localhost:8080/tracker");
当我在部署后尝试这个
WebSocket("wss://myurl/tracker")
或
WebSocket("wss://myurl: 8080/tracker")
连接失败
你能提供更多细节吗?准确的错误代码和消息是什么?
是否有可能在部署服务器前面有反向代理或负载平衡器?这可能会阻止websocket在部署环境中进行连接。在这种情况下,您需要配置代理/平衡器以允许websockets。在NGINX中,这些是你要找的行:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
Websocket连接以HTTP升级请求开始,根据安全性将协议升级到WS或WSS。上面的代码行指示NGINX将该请求进一步传递给服务器。
我建议你在这里深入阅读NGINS的指南。