我一直试图在管理员希望的情况下断开所有用户与会议室的连接。 我可以从房间获取套接字ID,但在尝试断开连接或离开房间时会出现错误
这就是我的联系方式:
var io = require('socket.io'),
http = require('http'),
server = http.createServer(),
io = io.listen(server);
io.sockets.on('connection', function(socket){
//socket.join('groupname');
console.log('User connected');
socket.on('disconnect', () => {
console.log('User disconnected...');
})
//This is how the room is connected to
socket.on('group', function(groupname) {
socket.join(groupname);
});
socket.on('completed', function(groupname) {
var users = io.nsps["/"].adapter.rooms[groupname]
console.log(users)
for(var i = 0; i < users.length; i++){
console.log(users[i])///undefined
}
});
})
还试过
socket.on('completed', function(groupname) {
var users = io.nsps["/"].adapter.rooms[groupname]
Object.keys(users.sockets).forEach( function(socketId){
console.log(groupname+" client socket Id: " + socketId );
socketId.disconnect();
});
});
感谢任何帮助 罗伊
答案 0 :(得分:3)
完成了这项工作,特别感谢tienthanh8490,以澄清在Socket.io中管理数据
我想我之前做过的事情,特别是我的第二个例子是;试图在字符串上触发函数!
无论如何,这是有效的
socket.on('completed', function(groupname) {
io.of('/').in(groupname).clients(function(error, clients){
if (error) throw error;
for(var i=0; i <clients.length; i++){
io.sockets.connected[clients[i]].disconnect(true)
}
});
这会断开房间中的所有用户