javascript - 客户端 Socket.io 持续断开并重新连接到 websocket

标签 javascript node.js websocket socket.io

我通过 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
})

最佳答案

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

关于javascript - 客户端 Socket.io 持续断开并重新连接到 websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28795681/

相关文章:

JavaScript 回调和函数式编程

javascript - 如何在单个监视变量中组合多个过滤器值?

javascript - 在 Material UI react 中更改步骤时,垂直步进器应滚动到顶部

java - WebSocket session 之间共享的所有成员是否应该同步?

java - 是否可以在没有 Jetty 的情况下在 Eclipse 中使用 Java WebSockets?

javascript - 避免在 beforeunload.. 上出现对话框。这可能吗?

javascript - 既然我们有 ES6 promise ,还有理由使用 Q 或 BlueBird 之类的 promise 库吗?

javascript - 如何使用 NodeJS dokerode 库获取进程的输出?

node.js - Docker 容器不响应另一个容器的请求

websocket - 使用来自 apollo-link-ws 的 WebSocketLink 检查互联网连接