在Chrome中,Socket IO似乎停止传输数据。这有内在原因吗?
我尝试过一个非常简单的客户端和简单的服务器端,但是服务器在5分钟后一直停止接收任何发出,然后重新连接,再过5分钟就可以了。
在内部ping机制之上,我有一个轮询机制,每20秒发回一次会话数据。
答案 0 :(得分:0)
我没有在NodeJS或Socket.io上使用WebSocket,但在Jetty中遇到了相同的行为。事实证明,对于所有WebSocket的会话,Jetty的空闲超时默认为5分钟(或300秒)。您可以将默认空闲超时值更改为适当的值,或在超时之前ping / pong这些连接。
在我的情况下,我决定使用ping / pong,因为它还有助于确定何时连接不再存在。我观察到,在某些情况下,即使网络关闭,连接也没有关闭。
根据engine.io(由socket.io使用)docs,服务器似乎默认pingInterval
为25秒。因此,除非您无意中禁用或更改了默认选项,否则应该使用ping / pong机制。