浏览器端WebSocket连接失败但telnet端口可连通问题求助(AWS EC2环境)
WebSocket连接报错1006排查方案
1006错误属于WebSocket连接异常关闭,通常是握手阶段失败或连接被中间节点主动中断,telnet仅能验证TCP层连通性,无法验证TLS、WebSocket应用层协议的连通性,可按以下步骤排查:
- 校验TLS配置有效性
wss协议依赖TLS加密,可执行命令openssl s_client -connect mywebsite.com:9090验证TLS握手是否正常,重点排查:证书是否过期、证书域名是否与访问域名匹配、是否使用了浏览器不信任的自签名证书、服务端9090端口是否确实配置了TLS(若服务端9090端口运行的是未加密的ws服务,用wss协议访问必然失败) - 检查AWS中间层配置
若EC2前端配置了ALB、WAF等中间服务,需确认:- ALB监听器已开启WebSocket支持,请求超时时间配置合理
- WAF规则未拦截WebSocket握手请求(握手请求会携带
Upgrade: websocket特殊头) - 若使用了CDN服务,需确认CDN已配置WebSocket支持
- 验证WebSocket握手逻辑
排查服务端是否正确处理WebSocket握手请求:浏览器发起WebSocket连接时会携带Upgrade: websocket、Connection: Upgrade、Sec-WebSocket-Key等请求头,服务端需返回101状态码完成协议切换,若服务端未处理该类请求,会直接中断连接触发1006错误 - 检查跨域配置
服务端若配置了Origin校验规则,需确认前端页面所在域名已加入允许访问的白名单,否则服务端会直接拒绝握手请求 - 排查端口拦截问题
部分运营商、本地防火墙、浏览器插件会拦截443以外端口的wss请求,可尝试将WebSocket服务迁移至443端口,通过路径区分业务,避免非标准端口被拦截 - 查看服务端运行日志
直接登录EC2实例查看WebSocket服务的运行日志,确认是否收到客户端的握手请求、请求处理过程中是否抛出异常,可快速定位问题根源
内容的提问来源于stack exchange,提问作者vivek modi
相关产品推荐
相关产品推荐

