目录

一、连接阶段常见错误
| 错误码 / 现象 | 产生原因 | 解决方案 |
| 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+)。 |

767

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



