node.js sockets.io 每 ~25 秒断开一次连接(与心跳相关)

标签 node.js socket.io heartbeat

我正在尝试使用 socket.io 设置一个 node.js 服务器。我看到的问题是我的服务器每 25 秒断开连接并重新连接一次客户端。

这是我的服务器代码:

var io = require('socket.io').listen(5876);
io.sockets.on('connection', function (socket)
{
    console.log("New connection established");

    socket.on('disconnect', function()
    {
        console.log("A client has disconnected.");
    });
}

我的客户端使用 socket.io.js 分发进行连接。据我了解(显然不正确),我需要我的客户端每 15 秒发送一次“心跳”(“::2”的消息),以防止服务器认为连接已死并断开连接。基本上:

<script src="socket.io.js"></script>
<script>
    var socket = io.connect('http://localhost:5876');

    socket.on('connect', function(data)
    {
        console.log("Connected to server.");
        setInterval(function() { socket.emit("::2"); console.log("sent heartbeat"); }, 15000); // schedule a heartbeat for every 15 seconds
    });
</script>

但是客户端仍然每 25 秒断开连接+重新连接(不包括第一个 25 秒滴答)。

node.js 服务器控制台日志如下所示(可能删除了一些较早的相同连接/断开阶段,因为它每 25 秒回显一次):

New connection established
   debug - emitting heartbeat for client 652791160849839915
   debug - websocket writing 2::
   debug - set heartbeat timeout for client 652791160849839915
   debug - got heartbeat packet
   debug - cleared heartbeat timeout for client 652791160849839915
   debug - set heartbeat interval for client 652791160849839915
   info  - transport end
   debug - set close timeout for client 652791160849839915
   debug - cleared close timeout for client 652791160849839915
   debug - cleared heartbeat interval for client 652791160849839915
A client has disconnected.
   debug - discarding transport
   debug - client authorized
   info  - handshake authorized 5961067041159055274
   debug - setting request GET /socket.io/1/websocket/5961067041159055274
   debug - set heartbeat interval for client 5961067041159055274
   debug - client authorized for
   debug - websocket writing 1::
New connection established

如何阻止我的服务器每 25 秒断开连接+重新连接客户端?

最佳答案

您使用的是最新版本的 socket.io,0.9.1/0.9.1-1?如果是这样,这是 Guillermo 确认的已知问题。目前的建议是回滚到 0.9.0 或 0.8.7

https://github.com/LearnBoost/socket.io/issues/777

关于node.js sockets.io 每 ~25 秒断开一次连接(与心跳相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9564633/

相关文章:

python - 通过 child_process 从 Python 向 Node 发送 JSON 如果太长会被截断,如何修复?

node.js - 通过 grunt 在实时服务器上运行 Protractor

javascript - Socket.io + PhoneGap

node.js - socket.io 如何跨多个服务器发送消息?

node.js - var 套接字 = io.connect ('http://yourhostname/' );?

node.js - Node Js 如何将消息广播到有空间的命名空间

hadoop - HDP 集群中心跳丢失

android - Android 手机每 66 毫秒拍照一次以进行颜色分析(心率监测)

javascript - Strongloop Passport.js 身份验证 - "Failed to obtain access token"

c# - Rabbitmq 空闲连接断开