socket.io客户端连接断开反复

如果多个socket.io服务器(ALB平衡)客户端连接并断开两个节点的“传输错误”。 理想情况下,它应该连接到一个节点,并保持连接到该节点。 在ALB中有一个节点的情况下,连接保持持久性。 任何帮助?

默认情况下,当socket.io首次启动时,它将以http轮询模式启动。 在几个连续的http请求之后,在两端的能力检查完成后,它将切换到webSocket模式。 这样做是为了首先build立一个工作连接,然后确定两端是否支持webSocket,如果是,则切换到使用webSocket。 如果你有一个非粘性的负载平衡器,那么你可能确实有问题,前几个HTTP轮询请求结束在不同的服务器上,这可能会打破如何socket.io工作,因为单个服务器将丢失一些连接启动顺序。

您可以将负载平衡器configuration为粘性,以便始终将同一个客户端发送到同一个服务器,或者可以告诉socket.io您只希望它以webSocket模式连接。

要将socket.ioconfiguration为仅使用webSocket并且不进行轮询(因此只有一个连接),您可以在客户端中设置configuration选项,如下所示:

Socket.io 1.x:只使用WebSockets?

请记住,socket.io具有自动连接逻辑,所以如果在build立到服务器的socket.io连接之后很长一段时间,连接因某种原因停止工作,客户端将丢弃当前连接并尝试创build一个新连接一。 如果您仍在使用非粘性负载平衡器,则重新连接可能会在不同的服务器上结束。 取决于你在服务器上做什么,可能或不可能是一个问题。 粘滞负载平衡将确保重新连接结束在同一台服务器上。