1

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

たとえば、サーバーから切断すると、サーバーがまだログを記録していることがわかります。それを止めるにはどうしたらよいでしょうか?

ありがとう〜

4

1 に答える 1

2

上記のコードでは、それがsetInterval追加のログを引き起こしています。

返された ID を保存してから、 on disconnect イベントsetIntervalを使用してクリアする必要があります。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);
    });
})

それ以外は、サーバー側のソケットで他に何もする必要はありません。ある時点でガベージコレクションが行われます。

于 2013-09-13T22:59:01.777 に答える