2017-04-08 50 views
0

我一直在試圖在管理員希望時斷開所有用戶與房間的連接。 我可以從房間內的插座的ID,但得到的錯誤嘗試斷開或離開房間斷開Sockect.io房間中的所有用戶

這是我如何連接時:

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(); 
      }); 
     }); 

任何幫助表示讚賞 Roy

回答

0

完成它,特別感謝tienthanh8490,澄清Soc內的管理數據我想我以前在做什麼,尤其是我的第二個例子是,試圖在一個字符串上激發一個函數!

不管怎麼說,這個工作

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

這種脫節的所有用戶在一個房間

相關問題