2011-12-17 73 views
7

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

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

+0

你找到了这个马特的解决方案吗? – SatheeshJM 2012-09-12 21:39:52

回答

4

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

如果你还需要帮助,你可以当用户尝试重新连接一个ping发送到旧的连接:

散发出来自服务器的“平”,并从若客户以“傍”回复连接仍然活着。如果ping超时(例如20秒后),请手动删除连接,以便用户重新连接。您可以使用ping通知原始客户端另一个客户端正在尝试连接,并为此提出一些UI。