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

一些模块与rooms.js

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

1 回答 1

2

来自关于房间的Wiki

向特定房间中的所有客户端发送事件:

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 回答