客户端丢失连接时,套接字IO检测到

时间:2012-02-07 19:38:50

标签: javascript node.js socket.io

我需要能够检测到用户何时失去与套接字的连接,当我关闭笔记本电脑时似乎没有调用socket.on("disconnect"),因此它不会运行ajax调用需要运行才能更新数据库以将用户标记为脱机。我如何检查连接是否已关闭?

2 个答案:

答案 0 :(得分:5)

如此处https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO所述,Socket.IO拥有自己的心跳实现。 但默认值为25秒间隔,丢失连接的阈值为60秒。

所以我的建议是:在测试时设置默认值。否则你可能会错过这个门槛。

示例:

socket.set("heartbeat timeout", 10);
socket.set("heartbeat interval", 5);

答案 1 :(得分:2)

我们也遇到了这个,如上所述使用我们自己的心跳计时器。

例如,服务器将每5秒发出一次心跳(我们简单地发送服务器时间)。客户端有11秒超时,因此它有2次机会来捕获心跳。如果它收到心跳,我们重置计时器。如果我们错过了两个心跳,那么就会运行超时功能,你可以随心所欲地做任何事情。

相当简单。