【解决】websocket ws连不上或无法连接

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

普通情况

大致报错内容如图:
在这里插入图片描述
WebSocket 连接失败的原因有很多,主要有以下几点:

  1. 服务器端没有正确配置 WebSocket,导致客户端无法连接。

  2. 网络问题,如网络不稳定,网络延迟等,导致客户端无法连接。

  3. 客户端代码有问题,导致无法正确连接服务器。

  4. 服务器端的防火墙设置不当,导致客户端无法连接。

  5. 服务器端的 WebSocket 服务器没有正确启动,导致客户端无法连接。

代码拦截情况

大致报错内容如图:
在这里插入图片描述
这个很明显能看出来ws连接失败啦。起初我觉得是请求地址的问题,但是经过多次检查这个理由被我pass掉了。

错误原因:

因为我写的是@ServerEndpoint的方式。需要注入ServerEndpointExporter,这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint。要注意,如果使用独立的servlet容器,而不是直接使用springboot的内置容器,就不要注入ServerEndpointExporter,因为它将由容器自己提供和管理。

解决方式:加入这个配置

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

学习参考:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白呀白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值