WebSocket连接失败排查与修复
问题描述
项目里使用 WebSocket 做实时通信时,本地测试是正常的,但联调环境一直连接失败。
当时的现象很简单:
- 自己本地环境可以连通
- 换到后端联调环境就连不上
- 区别主要在于目标端口不同
原因分析
这类问题如果本地正常、换环境失败,通常先不要怀疑前端代码本身,优先看网络和端口。
这次的实际原因是:联调环境对应的端口没有放行,被 Windows 防火墙拦截了。
也就是说,不是 WebSocket API 用错了,而是请求根本没真正到达目标服务。
解决方式
最直接的处理方式有两个:
- 在 Windows 防火墙中放行目标端口
- 临时关闭防火墙后重新测试
如果关闭防火墙后连接立刻恢复,基本就可以确认问题在端口访问策略,而不是业务代码。
建议的排查顺序
遇到 WebSocket 连接失败时,可以按这个顺序检查:
- 确认服务端进程是否真的启动
- 确认服务端监听的端口是否正确
- 确认当前机器是否能访问这个 IP 和端口
- 检查 Windows 防火墙或安全组是否拦截了目标端口
- 再回头检查
ws://、wss://、路径和鉴权参数
总结
如果 WebSocket 在本地正常、换环境失败,优先排查端口是否可达。
很多时候问题不在前端代码,而在这些更基础的条件:
- 服务没监听
- 端口没放行
- 防火墙拦截
先把网络链路打通,再看代码,排查效率会高很多。