【问题标题】:Client Socket.io disconnects and reconnects to websocket persistently客户端 Socket.io 永久断开并重新连接到 websocket
【发布时间】:2015-05-01 23:19:41
【问题描述】:

我通过 Socket.io 1.3.4(通过 websockets)连接到 NodeJS 服务器,客户端 socket.io 会在 5-30 秒后触发“断开连接”事件。

每次“断开连接”->“重新连接”->“重新连接”迭代大约需要。 2 秒。我通过电缆连接到相当稳定的网络。服务器托管在 AWS 上。

有时我的 Wi-Fi 连接不好,但根本没有触发“断开连接”事件。

  1. 如何调试此问题?

  2. 如何查看谁有罪 - 服务器或客户端?

  3. socket.io 如何理解是时候断开连接了?从他们的代码中无法理解这一点。

编辑。 Socket.io 配置:

io = require('socket.io')(server, { 
      log: false
    , "close timeout": 60
    , "heartbeat timeout": 60
    , "heartbeat interval": 20
})

【问题讨论】:

  • 您在 AWS 上使用任何负载均衡器吗?至于我,nginx 也在中断 websockets。
  • 我使用 dotcloud 作为云主机。他们肯定使用。我会问他们。

标签: javascript node.js websocket socket.io


【解决方案1】:

我在节点前面运行 nginx 时遇到了类似的问题,这是因为 proxy_read_timeoutproxy_send_timeout 设置得太低。 Socket.io 每 25 秒发送一次心跳,因此请确保将这些超时设置为大于 25 秒。

【讨论】:

  • 感谢您的回复。请查看我的配置(在问题中,我应该更改哪个值?)
  • @igorpavlov 如果无法更改 nginx 设置,可以尝试将 socket.io 心跳间隔减少到 10 秒,将超时时间减少到 30 秒。
  • 会尽力让你知道
  • 我应该将关闭超时和心跳超时都更改为 30 秒吗?您能否提供对所有 3 项设置的建议更改?
  • 无论如何,它没有帮助。仍然出现断线。还有其他想法吗?
猜你喜欢
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 2016-11-19
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2017-11-05
相关资源
最近更新 更多