Socket.io を使用すると、これが非常に簡単になります。名前空間と部屋があります。たとえば、2 つの異なる名前空間を作成するには、次のようにします。
var io = require('socket.io').listen(app, {origins: '*:*', log: false});
var page1 = io.of('/page1').on('connection', function (socket) {
//you can use socket in here
});
var page2 = io.of('/page2').on('connection', function (socket) {
//you can use socket in here
});
これで、2 つの名前空間ができました。それぞれの内部で、イベントをリッスンできます。たとえば、type イベントを送信した場合:
socket.on('type', function(text){
io.sockets.emit('type', {'whatWasTyped': text]);
}
これにより、接続されているすべてのクライアントにタイプ イベントが送信されます。
名前空間をさらに分離したい場合は、ルームを作成できます。名前空間にルームを作成する方法は次のとおりです。
var page1 = io.of('/page1').on('connection', function (socket) {
socket.on('add', function(area){
socket.join(area);
};
});
参加したいルームに接続するたびに、追加イベントを送信する必要があります。その後、その部屋にのみメッセージを送信できます。
io.of('/users').in(area).emit('event', {'event': yourInfoHere});
次のコマンドを実行すると、接続に関する情報を取得できます。
socket.get('user', function(err, info){ //in here });
これは、socket.io wiki: https://github.com/LearnBoost/socket.io/wiki/Roomsからの、頭のてっぺんからの情報でした。
私はそれをテストしていません。他にいくつか質問がある場合はお知らせください。