socket.io'断开'如果页面刷新得足够快,则不会调用

时间:2015-12-23 03:55:34

标签: 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...
    });
});

如果我在浏览器中打开此页面,一切似乎都很好。如果我刷新页面,则会触发disconnect然后connection。但是,如果我足够快地刷新,有时候disconnect没有被调用,因此客户端数据不会从服务器中清除。有没有办法保护这个?

修改:reword reconnect - > connection

1 个答案:

答案 0 :(得分:1)

正如adeneo所述,socket.io具有心跳,可自动检查客户端是否仍然连接。如果检测到客户端实际消失,则会触发disconnect代码。复制原始问题后,我尝试打开服务器,大约30秒后,“死”客户端被删除。所以要解决这个问题,你只需要等待。 Socket.io自己处理所有事情。