【问题标题】:Socket.io disconnects every 5 minutesSocket.io 每 5 分钟断开一次
【发布时间】:2016-02-28 10:43:14
【问题描述】:

在 Chrome 中,Socket IO 似乎停止传输数据。这有内部原因吗?

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

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

【问题讨论】:

  • 可能是防火墙或路由器不允许连接保持打开状态?或者某些计算机中可能的睡眠模式。
  • @jfriend00 无论客户端网络、系统或服务器如何,它都会发生。我尝试了 4 个不同的网络、4 台不同的计算机,从家庭连接到公司连接。我在不同的数据中心尝试了各种专用和 VPS 提供商。
  • 我认为是时候在 Chrome 调试器网络选项卡中检查网络跟踪了。

标签: node.js websocket socket.io


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 2020-06-23
    • 2012-06-30
    • 1970-01-01
    • 2013-11-17
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多