普通情况
大致报错内容如图:

WebSocket 连接失败的原因有很多,主要有以下几点:
-
服务器端没有正确配置 WebSocket,导致客户端无法连接。
-
网络问题,如网络不稳定,网络延迟等,导致客户端无法连接。
-
客户端代码有问题,导致无法正确连接服务器。
-
服务器端的防火墙设置不当,导致客户端无法连接。
-
服务器端的 WebSocket 服务器没有正确启动,导致客户端无法连接。
代码拦截情况
大致报错内容如图:

这个很明显能看出来ws连接失败啦。起初我觉得是请求地址的问题,但是经过多次检查这个理由被我pass掉了。
错误原因:
因为我写的是@ServerEndpoint的方式。需要注入ServerEndpointExporter,这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint。要注意,如果使用独立的servlet容器,而不是直接使用springboot的内置容器,就不要注入ServerEndpointExporter,因为它将由容器自己提供和管理。
解决方式:加入这个配置
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
学习参考:

文章讨论了WebSocket连接失败的常见原因,包括服务器未正确配置WebSocket、网络问题、客户端代码错误、防火墙设置不当以及服务器WebSocket服务未启动。在代码拦截情况下,重点指出使用@ServerEndpoint注解时需注意ServerEndpointExporter的注入,特别是在非SpringBoot内置容器中。解决方案是提供一个ServerEndpointExporter的@Bean配置。
2946

被折叠的 条评论
为什么被折叠?



