我需要能够检测到用户何时失去与套接字的连接,当我关闭笔记本电脑时似乎没有调用socket.on("disconnect")
,因此它不会运行ajax调用需要运行才能更新数据库以将用户标记为脱机。我如何检查连接是否已关闭?
答案 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次机会来捕获心跳。如果它收到心跳,我们重置计时器。如果我们错过了两个心跳,那么就会运行超时功能,你可以随心所欲地做任何事情。
相当简单。