Search…
2.2.2 房间
在每个名称空间中,还可以定义sockets可以join(加入/连接)leave(离开)的任意通道。

加入或离开

可以调用join来订阅给定通道的 socket
1
io.on('connection',socket=>{
2
socket.join("some room")
3
})
Copied!
然后在广播或者emit时,简单地使用 toin(两者是相同):
1
io.to('some room').emit('some event');
Copied!
离开该频道,请以与join的相同的方式调用leave:
1
io.leave("some room")
Copied!

默认房间

Socket.io中的每Socket都由一个随机的、不可访问的、唯一的标识符Socket#id标识。为了方便起见,每个socket都自动加入由该id标识的房间。
这使得向其他socket 广播消息变得容易:
1
io.on('connection',(socket)=>{
2
socket.io('say to someone',(id,msg)=>{
3
socket.broadcast.to(id).emit("my message",msg)
4
})
5
})
Copied!

断开

断开连接后,sockets 会自动离开它们所属的所有通道,不需要进行特殊处理。