2

私の悪いやり方

クライアント側

socket.on('connect',function(){ socket.emit('EnterRoom',{room:'test'});})

サーバー側
app.js

io.sockets.on('connection',function(socket){
   socket.on('EnterRoom', function(data) {   
   socket.join(data.room);    
   app.emit('event:JoinRoom',{room:data.room});    
})});

some-module-with-rooms.js

app.on('event:JoinRoom',function(data){if(data.room=='test'){/*anycode*/} });
4

1 に答える 1

2

部屋に関するウィキから:

特定の部屋のすべてのクライアントにイベントを発行する:

io.sockets.in('room').emit('event_name', data)

だからあなたの場合:

io.sockets.on('connection',function(socket){
  socket.on('EnterRoom', function(data) {   
    socket.join(data.room)
    io.sockets.in(data.room).emit('JoinRoom', data);    
  })
});

それは選択した部屋にのみ放出されます。部屋にアクセスできます:

io.sockets.manager.rooms

そして私はドキュメントを引用します:

これは、ソケット ID の配列へのキーとしてルーム名を持つハッシュです。部屋名の先頭に / 文字があることに注意してください

于 2013-05-27T21:27:44.307 に答える