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

node.js sockets.io每25秒断开一次连接(与心跳相关),node.js,socket.io,heartbeat,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()

我正在尝试使用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秒断开并重新连接客户端?

您不需要发送心跳信号来保持套接字连接,socket.emit的语法也是

          socket.emit('event_name',{"data"});

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


据我所知,您不需要手动发送心跳数据包,因为这是由socket.io处理的。在执行手动心跳呼叫后,尝试检查连接和断开事件。您是否解决过此问题?我有确切的问题。我降到了0.8.7,但问题依然存在。调试-客户端3744936361854682925的激发心跳超时信息-传输结束调试-设置客户端3744936361854682925调试的关闭超时-清除客户端的关闭超时3744936361854682925@PranoyC这里有一个可行的解决办法:除此之外,我最近刚刚使用了最新版本的socket.io,没有遇到任何问题。@Josh1billion不幸的是,我的项目不能使用比0.9.x更新的任何东西,因为1.0改变了很多东西,完全破坏了我们的项目。我会看一下workaround@PranoyC该死的,希望解决办法能奏效。如果没有,我可能会尝试的下一件事是降级甚至超过0.8.7,并希望一些旧版本没有这个bug。除此之外,恐怕我不知道。一定是这样;我昨晚刚安装的,所以可能是最新版本。如何回滚到0.9.0?我使用推荐的npm方法安装,如下所示:“npm install socket.io”您可以指定要安装的特定版本:npm install socket。io@0.9.0having同样的问题,但回滚在这里没有效果。对于套接字0.9.16和0.9.0,我在启动应用程序大约一分钟后得到“传输结束(心跳超时)”。使用Socketio0.8.7,我为客户端获得了一系列调试设置/清除的心跳超时。我降到了0.8.7,但问题依然存在。调试-为客户端3744936361854682925触发心跳超时信息-传输结束调试-为客户端3744936361854682925调试设置关闭超时-为客户端3744936361854682925清除关闭超时
          socket.emit('event_name',{"data"});