断开Sockect.io会议室中的所有用户

时间:2017-04-08 15:49:29

标签: javascript socket.io

我一直试图在管理员希望的情况下断开所有用户与会议室的连接。 我可以从房间获取套接字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();
            });
      });

感谢任何帮助 罗伊

1 个答案:

答案 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)
         }
       });

这会断开房间中的所有用户