提问者:小点点

Spring boot 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");

当我在部署后尝试这个时

Web Socket("ws s://my url/tracker")

Web Socket("ws s://my url: 8080/tracker")

连接失败


共1个答案

匿名用户

你能提供更多细节吗?确切的错误代码和信息是什么?

您的部署服务器前面有没有可能有反向代理或负载均衡器?这可能会阻止websocket在部署环境中连接。在这种情况下,您需要配置代理/均衡器以允许websocket。在NGINX中,这些是您要查找的行:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";

Websocket连接以HTTP升级请求开始,根据安全性将协议升级到WS或WSS。上面的行指示NGINX将该请求进一步传递给服务器。

我建议你在NGINS的指南中进行深入阅读。