【问题标题】:Socket.io : what happen to the client(socket) after a user is disconnected? Can I/Should I remove it?Socket.io:用户断开连接后客户端(套接字)会发生什么?我可以/我应该删除它吗?
【发布时间】:2013-09-14 07:13:01
【问题描述】:

我正在使用 socket.io,我想知道在连接关闭后如何删除客户端(套接字)。 (其实我不知道连接关闭后是怎么回事,那个socket会一直留在那里吗?要不要去掉?会不会占内存?)

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");
    });
})

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

谢谢~

【问题讨论】:

    标签: node.js socket.io


    【解决方案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);
        });
    })
    

    除此之外,不需要对服务器端的套接字做任何其他事情。它会在某个时候收集垃圾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2014-12-16
      • 1970-01-01
      相关资源
      最近更新 更多