Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript socket.io向其发射后离开房间_Javascript_Socket.io - Fatal编程技术网

Javascript socket.io向其发射后离开房间

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

我想知道什么时候向房间发射过程完成,以便在发射后立即离开房间。 下班后马上离开房间可以吗? 我尝试在emit to room中使用回调,但出现了服务器错误,所以我想这是不可能的。 因为我认为这是一个异步进程,所以在发出后立即离开房间可能不安全(在大规模情况下)。 想法

//将所有朋友加入一个房间
插座。连接(一些房间);
//向这个房间发送数据
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);