Node.js Socket.IO听房间连接的最佳方式?

时间:2013-05-26 14:22:33

标签: node.js socket.io

我的坏方法

客户端

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

1 个答案:

答案 0 :(得分:2)

来自Wiki关于Rooms

  

向特定房间的所有客户发送活动:

     

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数组的键。请注意,房间名称将具有前导/字符