socket.io发射后留下空间

时间:2015-09-05 18:10:03

标签: javascript socket.io

我想知道什么时候发射到房间的过程才能立即离开房间。 在发射后立即离开房间是否可以? 我尝试使用回调放射到房间,但收到服务器错误所以我想这是不可能的。 因为我认为这是一个异步过程,所以在发射之后离开房间可能不安全(大规模)。 想法?

//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?

1 个答案:

答案 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);