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

Node.js Socket.IO监听房间连接的最佳方式?,node.js,socket.io,Node.js,Socket.io,我的坏方法 客户端 socket.on('connect',function(){ socket.emit('EnterRoom',{room:'test'});}) 服务器端 app.js some-module-with-rooms.js app.on('event:JoinRoom',function(data){if(data.room=='test'){/*anycode*/} }); 关于: 向特定房间中的所有客户端发送事件: io.sockets.in('room').emit

我的坏方法

客户端

socket.on('connect',function(){ socket.emit('EnterRoom',{room:'test'});})
服务器端
app.js

some-module-with-rooms.js

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

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

io.sockets.in('room').emit('event\u 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数组的键。请注意,文件室名称将有一个前导/字符


是的:D但是100%的坏方法希望能有帮助:)让我知道。看看Wiki,app.emit('event:JoinRoom',{room:data.room})中有很多信息;-在所有应用程序上发出joinroom事件。。。app.on('event:JoinRoom',function(data){if(data.room=='test'){/*anycode*/}}})。。。那个听众室哦,好吧。。。我懂了。您希望在服务器中的其他位置发出该事件
io.sockets.manager.rooms