socket.io 发射后留出空间
socket.io leave room after emitting to it
我想知道发送到房间的过程何时完成,以便立即离开房间。
发出后立即离开房间可以吗?
我尝试在发送到房间时使用回调,但出现服务器错误,所以我想这是不可能的。
因为我认为这是一个异步过程,所以在发出后立即离开房间可能不安全(大规模)。
想法?
//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?
打电话后立即离开房间是安全的.emit()
。该房间仅用于确定您打算发送到哪些套接字,并且在 io.to()
调用中同步完成,以便在 .emit()
调用 returns 时全部确定。
即使将数据实际发送到那些 sockets id 是异步完成的(确实如此),socket 是否仍在房间内也不再重要。该房间最初仅用于 select 发送到哪些套接字,实际发送过程本身并未使用。
请记住,虽然房间听起来像是一个无所不能的概念,但它真正隐藏的只是一个插座列表。
所以,你应该能够做到这一点:
//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);
我想知道发送到房间的过程何时完成,以便立即离开房间。 发出后立即离开房间可以吗? 我尝试在发送到房间时使用回调,但出现服务器错误,所以我想这是不可能的。 因为我认为这是一个异步过程,所以在发出后立即离开房间可能不安全(大规模)。 想法?
//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?
打电话后立即离开房间是安全的.emit()
。该房间仅用于确定您打算发送到哪些套接字,并且在 io.to()
调用中同步完成,以便在 .emit()
调用 returns 时全部确定。
即使将数据实际发送到那些 sockets id 是异步完成的(确实如此),socket 是否仍在房间内也不再重要。该房间最初仅用于 select 发送到哪些套接字,实际发送过程本身并未使用。
请记住,虽然房间听起来像是一个无所不能的概念,但它真正隐藏的只是一个插座列表。
所以,你应该能够做到这一点:
//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);