Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试插座是否仍然打开_Javascript_Node.js_Websocket_Socket.io - Fatal编程技术网

Javascript 测试插座是否仍然打开

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.io中有一个连接用户数组。我的问题(我在回答中被警告过)是,即使在浏览器断开连接后,套接字仍留在这个数组中

我尝试在
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)
{
}