普通情况
大致报错内容如图:
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();
}
}
学习参考: