2015-10-30 154 views
0

在Chrome中,Socket IO似乎停止传输数据。这是否有内部原因?Socket.io每隔5分钟断开连接

我试过一个非常简单的客户端和简单的服务器端,但始终服务器停止接收任何发射后5分钟,然后将重新连接,并再罚5分钟。

在内部ping机制之上,我有一个轮询机制,每20秒发回一次会话数据。

+0

可能的防火墙或路由器不允许连接保持打开状态?或者某些电脑可能有睡眠模式。 – jfriend00

+0

@ jfriend00无论客户端网络,系统或服务器如何,都会发生这种情况。我尝试过4种不同的网络,4种不同的电脑,从家庭连接到公司连接。我已经在不同的数据中心尝试过各种专用和VPS提供商。 – James

+0

我认为是时候在Chrome调试器网络选项卡中检查网络跟踪了。 – jfriend00

回答

0

我不使用带有NodeJS或Socket.io的WebSocket,但经验与Jetty相同的行为。事实证明,对于所有WebSocket会话,Jetty的空闲超时默认为5分钟(或300秒)。您可以将默认的空闲超时值更改为适当的值,或在超时之前对这些连接进行ping/pong。

在我的情况下,我决定使用ping/pong,因为它还有助于确定连接何时不再存在。我发现在某些情况下,即使网络关闭,连接也没有关闭。

根据engine.io(使用socket.iodocs,服务器似乎具有25秒的默认值pingInterval。因此,除非您无意中禁用或更改了默认选项,否则ping/pong机制应该就位。