我依赖于在我的应用程序中触发的setInterval。它告诉每个套接字服务器仍在响应并活动heartbeat
。
clients.push(socket); // I store each socket here.
/**
* TCP Socket Heartbeat
**/
setInterval(function () {
clients.forEach(function (client) {
client.write("{\"type\":\"heartbeat\", \"msg\": \"HELO\"}\n");
});
}, 10000);
如果客户端在过去30秒内未收到服务器的心跳,则会脱机并尝试重新连接。
由于某些原因,在服务器运行几个小时之后,似乎停止发送一些这些心跳,因为我可以看到客户端由于不活动而离线,这告诉我他们无法接收到心跳。
这里有什么想法吗?