2016-05-04 8 views
0

に私はプレーンなチャットアプリケーションをsocket.ioし、持っている新しいを持っています。はsocket.io

そのチャットメッセージが接続されているすべてのユーザーに放出されるマルチユーザーアプリケーション。

以下は、サーバー側のために私のコードです。 チャットメッセージは、イベントが発生しているとのメッセージ

の放送のために加入今私の質問は、コードが正しいですか?特に断線部分。 切断時にチャットメッセージイベントでサブスクライブされたサブスクライバまたはリスナーを削除する必要がありますか?私はリスナーを削除しない場合、これはリークですか?

var server = app.listen(3006); 
console.log('listening on port 3006'); 

//socket io event listening 
var io = require('socket.io').listen(server); 

io.on('connection', function(socket) { 
    console.log('a user connected'); 
    socket.on('disconnect', function() { 
     console.log('user disconnected'); 
    }); 
    socket.on('chat message', function(msg) { 
     console.log(msg); 
     io.emit('chat message', msg); 
    }); 
}); 

答えて

1

私は、切断時にチャットメッセージイベントで subsrcibedされている加入者やリスナーを削除する必要がありますか?。

いいえdisconnectで処理する必要はありません。独自のデータ構造を更新する必要がない場合を除きます。彼らは接続を切断するとき

ユーザーは自動的にすべてのsocket.ioデータ構造から削除されます。あなたはそれを自分で行う必要はありません。

リスナーを削除しないとこれはリークですか?

ソケット切断しsocket.ioは、そのデータ構造のすべてからそれを削除する場合はありません、JavaScriptはゴミがそう収集され、ソケットオブジェクトは、ごみ限り、あなたはあなた自身のデータのいずれかを持っていないとして収集されますソケットオブジェクトへの参照を保持する構造体。

+0

鮮明な答えてくれてありがとうは...理にかなっています – saurav

関連する問題