Javascript socket.io';断开';如果页面刷新速度足够快,则不调用

Javascript socket.io';断开';如果页面刷新速度足够快,则不调用,javascript,socket.io,Javascript,Socket.io,我有以下代码摘要: io.on('connection', function(client) { client.uuid = uuid.v4(); // add client object to server... console.log('socket.io:: client connected ' + client.uuid ); client.on('disconnect', function() { console.log('socke

我有以下代码摘要:

io.on('connection', function(client) {
    client.uuid = uuid.v4();
    // add client object to server...

    console.log('socket.io:: client connected ' + client.uuid );

    client.on('disconnect', function() {
        console.log('socket.io:: client disconnected ' + client.uuid );
        // remove client object from server...
    });
});
如果我在浏览器中打开此页面,一切都会很好。如果我刷新页面,它将触发
断开连接
,然后触发
连接
。但是,如果刷新速度足够快,有时
disconnect
不会被调用,因此客户端数据也不会从服务器上清除。有什么办法可以避免这种情况吗


编辑:重写
重新连接
->
连接

如前所述,socket.io具有心跳信号,可自动检查客户端是否仍处于连接状态。如果检测到客户端实际已离开,
disconnect
代码将被触发。在复制了我最初的问题后,我尝试让服务器保持打开状态,大约30秒后,“死”客户端被删除。所以要解决这个问题,你只需要等待。Socket.io自己处理一切。

永远不能保证浏览器有时间向服务器发送请求,无论是使用ajax还是sockets。浏览器不等待任何人,它会在可能的时候重新加载/重定向,你不能停止或延迟它(因为这对用户来说真的很烦人)。修复通常是从服务器上轮询,看看用户是否还在,socket.io通过心跳自动执行此操作,当客户端没有响应时,可能会触发
离开
取消订阅
事件服务器端。如果刷新太快,是否会发生
重新连接
?我不这么认为..您可以通过打开Node的debug来了解孤立连接的情况我让服务器打开了一段时间,我看到大约30-60秒后,我看到
断开连接
事件触发@adeneo你想写下你的评论作为回答,这样我就可以接受了吗?