Socket.io:用户断开连接后客户端(套接字)会发生什么?可以/我应该将其删除吗?

时间:2013-09-13 22:40:04

标签: node.js socket.io

我正在使用socket.io,我想知道如何在关闭连接后删除客户端(套接字)。 (事实上​​,我不知道连接关闭后发生了什么,那个套接字是否会保留在那里?我应该将其删除吗?它会占用内存吗?)

My code:

socket.No = socketNo++;
io.sockets.on("connection",function(socket){
    setInterval(function(){
        console.log("Server calling update collection with socket No.",socket.No);
    },3000);

    //When connection is close()
    socket.on("disconnect",function(){
        console.log("A user disconnected");
    });
})

例如,我断开与服务器的连接,发现服务器仍在记录。我该怎么办才能阻止它呢?

感谢〜

1 个答案:

答案 0 :(得分:1)

在上面的代码中,导致额外记录的是setInterval

您需要存储从setInterval返回的ID,然后在断开连接事件上使用clearInterval清除它。

类似的东西:

io.sockets.on("connection",function(socket){
    var intervalId = setInterval(function(){
        console.log("Server calling update collection with socket No.",socket.No);
    },3000);

    //When connection is close()
    socket.on("disconnect",function(){
        console.log("A user disconnected");
        clearInterval(intervalId);
    });
})

除此之外,无需对服务器端的套接字执行任何其他操作。它会在某些时候收集垃圾。