Javascript 测试插座是否仍然打开
按照我的说明,我现在在socket.io中有一个连接用户数组。我的问题(我在回答中被警告过)是,即使在浏览器断开连接后,套接字仍留在这个数组中 我尝试在Javascript 测试插座是否仍然打开,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,按照我的说明,我现在在socket.io中有一个连接用户数组。我的问题(我在回答中被警告过)是,即使在浏览器断开连接后,套接字仍留在这个数组中 我尝试在socket.on('disconnect'函数中从阵列中移除套接字,但在浏览器断开连接和socket.io触发断开连接之间仍有约1分钟的延迟 “测试”套接字以查看其是否实际处于活动状态的最佳方法是什么?我很想尝试发送消息并捕获任何错误,但我觉得有一个更优雅的解决方案。我的断开连接处理程序中有一个错误。我最终使用的是: socket.on('di
socket.on('disconnect'
函数中从阵列中移除套接字,但在浏览器断开连接和socket.io触发断开连接之间仍有约1分钟的延迟
“测试”套接字以查看其是否实际处于活动状态的最佳方法是什么?我很想尝试发送消息并捕获任何错误,但我觉得有一个更优雅的解决方案。我的断开连接处理程序中有一个错误。我最终使用的是:
socket.on('disconnect', function() {
users.splice(users.indexOf(socket), 1);
});
或
断开连接事件在所有客户端断开连接之前不会触发!有关如何测试“套接字是否仍然打开”的解决方案 工作原理: readyState=连接的当前状态;这是就绪状态之一 常量。只读。
“就绪状态常数”
正在连接0:连接尚未打开。
打开1:连接已打开,可以进行通信。
关闭2:连接正在关闭过程中。
CLOSED 3:连接已关闭或无法打开
您可以尝试减少
关闭超时时间
,请参见,默认值为60秒。
socket.on('end',function(){
//your code
})
socket.on('error',function(err){
//in case of any errors
})
if(socket.readyState === socket.OPEN)
{
}