Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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 客户如何通过socketio通过离开所有旧房间连接到新房间_Javascript_Node.js_Websocket_Socket.io - Fatal编程技术网

Javascript 客户如何通过socketio通过离开所有旧房间连接到新房间

Javascript 客户如何通过socketio通过离开所有旧房间连接到新房间,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,我在服务器上有5个房间,比如“A”、“B”、“C”、“D”、“E” 服务器端 i、 e //创建房间的功能 function connectSocket(data) { io.emit(data.device_id, data); console.log('room',data.device_id, 'created'); } //房间创建呼叫 connectSocket("A"); 客户端 var socket = io(*url*); socket.on('connect

我在服务器上有5个房间,比如“A”、“B”、“C”、“D”、“E”

服务器端 i、 e

//创建房间的功能

function connectSocket(data) {
    io.emit(data.device_id, data);
    console.log('room',data.device_id, 'created');
}
//房间创建呼叫

connectSocket("A");
客户端

var socket = io(*url*);
socket.on('connect', function () {
    console.log('Connected to server');
});
socket.on(*roomname*, function (message) {
    console.log(message);
});
` 问题

我想把A房间换到B房间

但在切换之前,我想关闭所有连接


当我加入新房间时,我不想收听旧房间的数据。我想你把活动和房间弄混了。
io.emit(data.device\u id,data)
不创建文件室,它只是将数据发送到每个连接的客户端,第一个参数是事件的名称,第二个参数是数据

使用Socket.IO中的文件室的正确方法如下:

加入一个房间:

socket.join(roomId); // roomId is a string
离开房间:

socket.leave(roomId);
发送至“游戏”室中的所有客户端,但发件人除外:

socket.to('game').emit('nice game', "let's play a game");
发送给“游戏”室中的所有客户,包括发件人:

io.in('game').emit('big-announcement', 'the game will start soon');
有关更多信息,请查看和有关的文档


我希望有帮助

我也面临着同样的问题,请有人解释一下如何在安静的环境下一次使用一个房间code@hexacyanide有什么帮助吗?使用socket.leave(room_id)在“断开连接”事件中如何在服务器上创建房间?如何从客户端加入刚刚在服务器上创建的文件室?我怎样才能离开客户的房间?注意:当我们离开客户端时,我们在服务器上创建的任何房间都不会关闭。因为多个客户端将加入以从该房间获取数据@塔马斯
io.in('game').emit('big-announcement', 'the game will start soon');