我想知道什么时候发射到房间的过程才能立即离开房间。 在发射后立即离开房间是否可以? 我尝试使用回调放射到房间,但收到服务器错误所以我想这是不可能的。 因为我认为这是一个异步过程,所以在发射之后离开房间可能不安全(大规模)。 想法?
//join all friends to a room
Socket.join(SOME_ROOM);
//send data to this room
io.to(SOME_ROOM).emit('SOME_EVENT', SOME_DATA); //cb function fails if I add one
//leave room
Socket.leave(SOME_ROOM); //is it safe?
答案 0 :(得分:2)
在致电.emit()
后立即离开房间是安全的。该房间仅用于确定您打算发送到哪个套接字,并在io.to()
调用中同步完成,以便在.emit()
调用返回时计算出来。
即使将数据实际发送到那些套接字id是异步完成的(也就是这样),套接字是否仍在房间内也不再重要。该房间仅用于初始选择要发送到哪个套接字,并且不在实际发送过程中使用。
请记住,虽然房间听起来像是一个无所不能的概念,但实际上它只是一个插座清单。
所以,你应该可以做到这一点:
//join all friends to a room
Socket.join(SOME_ROOM);
//send data to this room
io.to(SOME_ROOM).emit('SOME_EVENT', SOME_DATA);
//leave room
Socket.leave(SOME_ROOM);