Javascript socket.io向其发射后离开房间
我想知道什么时候向房间发射过程完成,以便在发射后立即离开房间。 下班后马上离开房间可以吗? 我尝试在emit to room中使用回调,但出现了服务器错误,所以我想这是不可能的。 因为我认为这是一个异步进程,所以在发出后立即离开房间可能不安全(在大规模情况下)。 想法Javascript socket.io向其发射后离开房间,javascript,socket.io,Javascript,Socket.io,我想知道什么时候向房间发射过程完成,以便在发射后立即离开房间。 下班后马上离开房间可以吗? 我尝试在emit to room中使用回调,但出现了服务器错误,所以我想这是不可能的。 因为我认为这是一个异步进程,所以在发出后立即离开房间可能不安全(在大规模情况下)。 想法 //将所有朋友加入一个房间 插座。连接(一些房间); //向这个房间发送数据 io.to(SOME_ROOM.emit('SOME_EVENT',SOME_DATA))//如果我添加一个,cb函数将失败 //离开房间 插座。离开
//将所有朋友加入一个房间
插座。连接(一些房间);
//向这个房间发送数据
io.to(SOME_ROOM.emit('SOME_EVENT',SOME_DATA))//如果我添加一个,cb函数将失败
//离开房间
插座。离开(一些房间)//安全吗?
呼叫.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);