根据我之前在问题中的指示,我现在有了一个socket.io连接用户数组。我的问题(在答案中已经被警告)是即使浏览器断开连接,socket仍然停留在该数组中。
我尝试在socket.on('disconnect'
函数中从数组中删除socket,但是在浏览器断开连接和socket.io触发断开连接之间仍然存在约1分钟的延迟。
最好的方法是“测试”socket以查看其是否真正活动?我想尝试发送消息并捕获任何错误,但我觉得有一种更优雅的解决方案。
根据我之前在问题中的指示,我现在有了一个socket.io连接用户数组。我的问题(在答案中已经被警告)是即使浏览器断开连接,socket仍然停留在该数组中。
我尝试在socket.on('disconnect'
函数中从数组中删除socket,但是在浏览器断开连接和socket.io触发断开连接之间仍然存在约1分钟的延迟。
最好的方法是“测试”socket以查看其是否真正活动?我想尝试发送消息并捕获任何错误,但我觉得有一种更优雅的解决方案。
if(socket.readyState === socket.OPEN)
{
}
为什么它能够工作:
readyState = 连接的当前状态;这是 Ready state 常量之一。只读。
"Ready state 常量"
CONNECTING 0:连接尚未打开。
OPEN 1:连接已打开,可以通信。
CLOSING 2:连接正在关闭的过程中。
CLOSED 3:连接已关闭或无法打开。
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
})
close timeout
,参考链接:https://dev59.com/L1rUa4cB1Zd3GeqPlqLM,默认值为60秒。 - undefined