testing套接字是否仍然打开

按照我上一个问题的说明 ,我现在在socket.io中有一组连接的用户。 我的问题(我在答案中被警告)是,甚至在浏览器断开之后,套接字仍然保留在这个数组中。

我尝试从socket.on('disconnect'函数中删除数组中的socket.on('disconnect' ,但是在浏览器断开连接并且socket.io触发断开连接之间仍然存在〜1分钟的延迟。

什么是“testing”一个套接字来查看它是否真正活着的最好方法? 我很想尝试发送消息并捕获任何错误,但我觉得有一个更优雅的解决scheme。

我的断开处理程序中有一个错误。 我最终使用的是:

 socket.on('disconnect', function() { users.splice(users.indexOf(socket), 1); }); 
 socket.on('end',function(){ //your code }) 

要么

 socket.on('error',function(err){ //in case of any errors }) 

断开事件不会触发,直到所有的客户端已断开连接!