WebSocket 系列—(2)WebSocket 常见错误与解决方案

目录

一、连接阶段常见错误

二、通信阶段常见错误

三、心跳与断线问题

四、安全与权限问题

五、Nginx / 反向代理层错误

六、调试工具与诊断方法

七、常见问题与最佳实践汇总

八、示例:心跳 + 自动重连(前端)


一、连接阶段常见错误

错误码 / 现象 产生原因 解决方案
ERR_CONNECTION_REFUSED 服务端未启动或端口未监听 检查 WebSocket 服务器是否启动;
端口(如 8080)是否被占用;
可用 netstat -tlnp 检查。
ERR_CONNECTION_TIMED_OUT 服务器不可达、防火墙拦截 确认服务器网络连通性、关闭防火墙或放行对应端口。
401 Unauthorized 鉴权失败(如 Token 过期) 检查请求头中是否携带 Authorization 或 Sec-WebSocket-Protocol 中的 Token。
403 Forbidden 访问来源被拦截(跨域/CORS) 在服务器端允许 setAllowedOrigins("*") 或配置具体的白名单域名。
502 Bad Gateway / 400 Bad Request Nginx 未正确配置升级头 Nginx 中添加:proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";
SSL_ERROR_HANDSHAKE_FAILURE_ALERT wss 证书或代理配置错误 检查证书路径与格式,确认使用匹配的公私钥文件;
客户端连接使用 wss:// 而非 ws://。

二、通信阶段常见错误

<
错误码 / 现象 原因分析 解决方案
1000 (Normal Closure) 正常关闭连接 无需处理。
1001 (Going Away) 客户端关闭页面或断网 客户端可实现自动重连机制。
1002 (Protocol Error) 客户端发送了非法数据帧 检查发送内容是否符合 WebSocket 协议(如未分帧、非法二进制数据)。
1003 (Unsupported Data) 不支持的数据类型(如发送对象未序列化) 确保只发送字符串或二进制数据;使用 JSON.stringify()。
1006 (Abnormal Closure) 异常断开(无 close 帧) 常见于断网、心跳超时、代理中断。增加心跳(ping/pong)机制。
1009 (Message Too Big) 消息体太大 限制消息大小或压缩传输(可拆分传输)。
1011 (Internal Error) 服务端异常 检查后端日志,捕获异常、避免未处理的错误。
1013 (Try Again Later) 服务端过载 启用连接限流或负载均衡。
1015 (TLS Handshake Error) SSL 协议不匹配 确保客户端与服务端使用相同版本(TLS1.2+)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

34号树洞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值