Node.js Socket.IO按名称删除房间
当一个房间的名字不再需要时,有没有办法完全删除它。 我尝试了以下答案,但不起作用: 我正在使用socketio 2,它抛出以下错误: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
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或其他工具来缓存有效名称。