Socket IO检测客户端何时失去连接

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

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

所以我的build议是:按照您期望的testing设置默认值。 否则,你可能会错过门槛。

例:

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

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

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

非常坦率的。