当我从本地主机更改为特定 URL 地址时无法连接到 websocket
Cannot connect to websocket when I change from localhost to a particular URL address
我有一个 WebSocket 应用程序,它是在 Spring maven 框架中开发的,当它部署在 localhost:8080/test 中时效果非常好,其中 test 是我的套接字端点。现在,我在我的 AWS 云服务器中部署了该应用程序,并尝试使用相同的方法连接到云服务器,但使用特定的 URL(例如,https://example.com/test),其中 test 是 WebSocket 端点,URL(example.com) 是我的 link,类似于 localhost:8080。我也在安全组中打开了必要的连接所需要的端口
对于本地主机,它工作正常,但是当我尝试将它连接到我的云服务器时,WebSocket returns 总是带有状态 400 的错误函数。我不确定为什么会出现状态 400,因为根据我的知识状态 400 意味着这是一个错误的请求。伙计们,我做错了什么?
我在下面粘贴我的 java 代码
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/ws/");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/test").setAllowedOrigins("*"); // This will allow you to use ws://localhost:8080/test to establish websocket connection
registry.addEndpoint("/test").setAllowedOrigins("*").withSockJS(); // This will allow you to use http://localhost:8080/test to establish websocket connection
}
}
我是否缺少任何配置或缺少任何代码片段?
P.S:我所有的测试主要是使用 POSTMAN Websocket 请求完成的,是的!我将 wss:// 用于 example.com
我的 POSTMAN URL 往往是 wss://example.com/test ------> 不起作用
ws://localhost:8080/test ------> 这个有效
我发现了问题。我一直在 Apache 服务器后面托管我的 tomcat 服务器,该服务器实际上将流量路由到 tomcat。所以我得到了错误 Spring WebSocket: Handshake failed due to invalid Upgrade header: null.
我从 Spring WebSocket: Handshake failed due to invalid Upgrade header: null
找到了解决这个问题的方法
我有一个 WebSocket 应用程序,它是在 Spring maven 框架中开发的,当它部署在 localhost:8080/test 中时效果非常好,其中 test 是我的套接字端点。现在,我在我的 AWS 云服务器中部署了该应用程序,并尝试使用相同的方法连接到云服务器,但使用特定的 URL(例如,https://example.com/test),其中 test 是 WebSocket 端点,URL(example.com) 是我的 link,类似于 localhost:8080。我也在安全组中打开了必要的连接所需要的端口
对于本地主机,它工作正常,但是当我尝试将它连接到我的云服务器时,WebSocket returns 总是带有状态 400 的错误函数。我不确定为什么会出现状态 400,因为根据我的知识状态 400 意味着这是一个错误的请求。伙计们,我做错了什么?
我在下面粘贴我的 java 代码
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/ws/");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/test").setAllowedOrigins("*"); // This will allow you to use ws://localhost:8080/test to establish websocket connection
registry.addEndpoint("/test").setAllowedOrigins("*").withSockJS(); // This will allow you to use http://localhost:8080/test to establish websocket connection
}
}
我是否缺少任何配置或缺少任何代码片段?
P.S:我所有的测试主要是使用 POSTMAN Websocket 请求完成的,是的!我将 wss:// 用于 example.com
我的 POSTMAN URL 往往是 wss://example.com/test ------> 不起作用
ws://localhost:8080/test ------> 这个有效
我发现了问题。我一直在 Apache 服务器后面托管我的 tomcat 服务器,该服务器实际上将流量路由到 tomcat。所以我得到了错误 Spring WebSocket: Handshake failed due to invalid Upgrade header: null.
我从 Spring WebSocket: Handshake failed due to invalid Upgrade header: null
找到了解决这个问题的方法