socket.join(room[, callback])

  • room (String)
  • callback(Function)
  • Returns 连接的Socket

将客户端添加到room中,并根据需要触发带有err签名(如果有)的回调。

  1. i.on('connection',(socket)=>{
  2. socket.join('room 237',()=>{
  3. let rooms= Object.keys(socket.room);
  4. console.log(rooms); // [ <socket.id>, 'room 237' ]
  5. io.to("room 237").emit('a new ueser has joined the room'); // 广播给房间里的每个人
  6. })
  7. })

连接室的机制由已配置的Adapter(参见上面的 Server#adapter)处理,默认为socket.io-adapter

为了您的方便,每个socket自动连接由其ID标识的房间(请参见Socket#id)。这使得向其他socket广播消息变得容易:

  1. io.on('connection',(socket)=>{
  2. socket.on('say to someone',(id,msg)=>{
  3. // 使用给定的ID向socket发送私有消息
  4. socket.to(id).emit("my message",msg)
  5. })
  6. })