如果页面刷新速度足够快,则不会调用 socket.io“断开连接”

Moo*_*her 5 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('socket.io:: client disconnected ' + client.uuid );
        // remove client object from server...
    });
});
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中打开此页面,一切看起来都很好。如果我刷新页面,它将触发disconnect,然后connection. 但是,如果我刷新得足够快,有时disconnect不会被调用,因此客户端数据不会从服务器中清除。有什么办法可以避免这种情况吗?

编辑:改写reconnect->connection

Moo*_*her 1

正如adeneo提到的,socket.io 有心跳,它会自动检查客户端是否仍然连接。disconnect如果检测到客户端确实消失了,则会触发该代码。在复制我原来的问题后,我尝试让服务器保持打开状态,大约 30 秒后,“死”客户端被删除。所以要解决这个问题,你只需要等待。Socket.io 自己处理一切。