Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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
Node.js Socket.IO按名称删除房间_Node.js_Socket.io - Fatal编程技术网

Node.js Socket.IO按名称删除房间

Node.js Socket.IO按名称删除房间,node.js,socket.io,Node.js,Socket.io,当一个房间的名字不再需要时,有没有办法完全删除它。 我尝试了以下答案,但不起作用: 我正在使用socketio 2,它抛出以下错误: node_modules/socket.io-adapter/index.js:210 if(fn)process.nextTick(fn.bind(null,null,sids));类型错误:fn.bind不是函数 基本上,是否存在删除/移除房间的快捷方式,而不是对每个插座执行离开?以下是我最终解决问题的方法: io.of('/').in('room name

当一个房间的名字不再需要时,有没有办法完全删除它。 我尝试了以下答案,但不起作用: 我正在使用socketio 2,它抛出以下错误:

node_modules/socket.io-adapter/index.js:210
if(fn)process.nextTick(fn.bind(null,null,sids));类型错误:fn.bind不是函数


基本上,是否存在删除/移除房间的快捷方式,而不是对每个插座执行
离开

以下是我最终解决问题的方法:

io.of('/').in('room name').clients(function(error, clients) {
    if (clients.length > 0) {
        console.log('clients in the room: \n');
        console.log(clients);
        clients.forEach(function (socket_id) {
            io.sockets.sockets[socket_id].leave('room name');
        });
    }
});

socket.IO 2.x版应该可以使用,这里是我最终解决问题的方法:

io.of('/').in('room name').clients(function(error, clients) {
    if (clients.length > 0) {
        console.log('clients in the room: \n');
        console.log(clients);
        clients.forEach(function (socket_id) {
            io.sockets.sockets[socket_id].leave('room name');
        });
    }
});

这应该适用于socket.IO 2.x版

我认为socket.IO不必实现这一点,它不知道什么名称不能再使用了。我建议自己管理名称,使用Redis或其他任何工具来缓存有效名称。我认为socket.io不必实现这一点,它不知道什么名称不能再使用了。我建议自己管理名称,使用Redis或其他工具来缓存有效名称。