Open huenchao opened 5 years ago
使用socket.io这个库,在建立websocket通信的时候,由于兼容性原因,会发出大概5次http请求给服务器,来询问是否可以建立websocket,以及是否链接成功。我们的node项目是部署在集群上的,每一个pod的nodejs进程,又利用cluster,fork出n个worker去处理请求。
假设,用户为U,一个pod上fork出了5个worker,他们叫A、B、C、D、E。U要和server建立一个websocket链接,还记得上面说过,建立链接需要5次http请求,所以master可能会把第一个http分给了A处理,第二个给了B....第五个给了E。这就造成建立链接失败。所以后来改进了策略,直接一次http来升级协议。
解决上面的疑问需要搞清楚如下几个点:
强烈推荐的文章:https://segmentfault.com/a/1190000010260600
问题来源:
使用socket.io这个库,在建立websocket通信的时候,由于兼容性原因,会发出大概5次http请求给服务器,来询问是否可以建立websocket,以及是否链接成功。我们的node项目是部署在集群上的,每一个pod的nodejs进程,又利用cluster,fork出n个worker去处理请求。
场景复现:
假设,用户为U,一个pod上fork出了5个worker,他们叫A、B、C、D、E。U要和server建立一个websocket链接,还记得上面说过,建立链接需要5次http请求,所以master可能会把第一个http分给了A处理,第二个给了B....第五个给了E。这就造成建立链接失败。所以后来改进了策略,直接一次http来升级协议。
问题描述: