Spring启动STOMP websocket在本地工作,但不在部署的服务器上



我有一个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的指南。

相关内容

  • 没有找到相关文章

最新更新