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

Dyl*_*oss 12 javascript node.js socket.io

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

sja*_*sja 6

正如这里提到的https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO,Socket.IO有它自己的心跳实现.但默认值为25秒间隔,丢失连接的阈值为60秒.

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

例:

socket.set("heartbeat timeout", 10);
socket.set("heartbeat interval", 5);
Run Code Online (Sandbox Code Playgroud)


Dom*_*omA 2

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

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

非常坦率的。