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

从维基有关房间 :

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

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