如何检查套接字是否仍然连接?

我有一个页面,用户通过socket.io连接到我的节点服务器,但是我只允许他们有一个打开的socket.io连接到服务器(通过传递他们的帐户ID授权和存储在一个数组)这工作正常99%的时间。 问题是,有时用户断开连接时,服务器端断开连接事件不会因为某种原因而触发,所以我无法从客户端arrays中清除他们的帐户,最终导致它们被locking。

有没有办法让我来检查他们的旧套接字连接(我的ID)是否仍然活动? (所以,如果不是,我可以清除旧的连接,让他们再次连接)

确保心跳被设置为true(默认)。 如果超时过期,断开应该自动发生。 但是,有一个关于心跳不起作用的错误报告。 确保你有最新版本的Socket.IO(我不确定错误的状态)。

如果仍然需要帮助,则可以在用户尝试重新连接时向旧连接发送ping命令:

从服务器发出“ping”,如果连接仍然存在,则从客户端回复“pong”。 如果ping超时(20秒后),手动删除连接,以便用户可以重新连接。 您可以使用ping来通知原始客户端另一个客户端正在尝试连接,并引发一些UI。