SocketIO、Websocket断开重连问题排查方案

365bet主页器 时间: 2025-11-11 19:00:07 作者: admin 查阅次数: 2044 公众评价: 181
SocketIO、Websocket断开重连问题排查方案

用了SocketIO,Websocket好久了,并且在不同的项目上因为网络的复杂程度以及代理的不同出现了各种websocket断开重连的问题。本篇总结websocket使用过程中的断开重连问题,主要是SocketIO使用过程中的问题。首先是在Nginx代理中遇到的问题,因为websocket是由HTTP协议升级为websocket的,因此我们并不能完全像配置HTTP代理那样配置配置websocket的代理,如下为Nginx提供的官方websocket的配置:

location /chat/ {

proxy_pass http://backend;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

}

上面的配置中必须配置 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";这两个选项,否则会出现断开重连的问题。第二HTTP的协议必须是1.1,而非1.0否则也会出现断开重连的问题。

在确定代理配置没有问题之后,如果还有断开重连的问题,这时候我们需要通过抓包,来排查问题,因为网络的复杂性、防火墙、网络配置等问题,可能造成发送的包有问题,导致重连失败。这里我们以socket.io的连接为例,socket.io一开始并不直接升级http为websocket,而是先发送一个http请求获取sid等一些客户端需要的参数,抓包如下:

如上为HTTP请求的内容,会返回sid 服务端客户端唯一标识,升级协议upgrades为websocket,ping间隔为5000毫秒,即心跳间隔为5秒,超时为25000毫秒即25秒不发

关联

Illustrator 中的手绘图。 7 个步骤
beat365体育亚洲

Illustrator 中的手绘图。 7 个步骤

📅 08-26 👁️ 2874
暴风TV安卓版
beat365体育亚洲

暴风TV安卓版

📅 07-22 👁️ 433

链接