我有一个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")
连接失败
你能提供更多细节吗?确切的错误代码和信息是什么?
您的部署服务器前面有没有可能有反向代理或负载均衡器?这可能会阻止websocket在部署环境中连接。在这种情况下,您需要配置代理/均衡器以允许websocket。在NGINX中,这些是您要查找的行:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
Websocket连接以HTTP升级请求开始,根据安全性将协议升级到WS或WSS。上面的行指示NGINX将该请求进一步传递给服务器。
我建议你在NGINS的指南中进行深入阅读。