42 votes

obtenir combien de personnes sont dans une salle de discussion dans socket.io

J'ai ce code en ce moment qui définit le pseudo et la pièce :

 io.sockets.on('connection', function(client){
    var Room = "";
    client.on("setNickAndRoom", function(nick, fn){
        client.join(nick.room);
        Room = nick.room;
        client.broadcast.to(Room).emit('count', "Connected:" + " " + count);
        fn({msg :"Connected:" + " " + count});
    });

Je voulais savoir comment je pouvais obtenir combien de personnes sont connectées à une salle de discussion spécifique... comme Room.length

côté client :

 function Chat(){
    this.socket = null;
    this.Nickname = "";
    this.Room = "";
    var synched = $('#syncUp');
    this.Connect = function(nick, room){ 
        socket =  io.connect('http://vybeing.com:8080');    
        Nickname = nick;
        Room = room;
        //conectarse
        socket.on('connect',function (data) {
            socket.emit('setNickAndRoom', {nick: nick, room: room}, function(response){
                $("#connection").html("<p>" + response.msg + "</p>");
            });
        });
}

J'ai trouvé ça, mais ça donne undefined:

 count = io.rooms[Room].length;

27voto

sntran Points 1372

Si vous utilisez la version < 1,

var clients = io.sockets.clients(nick.room); // all users from room

6voto

Márton Vető Points 95

En version 1.4.5

 var clientNumber = io.sockets.adapter.rooms[room].length;

5voto

Volure DarkAngel Points 5916

Je voulais obtenir une liste d'utilisateurs dans une salle. Cela a fini par être ma solution.

J'ai ajouté une propriété de nom d'utilisateur à mon socket, mais pour être complet, je l'ai changé en "id", qui est l'identifiant du socket.

 var sockets = io.in("room_name")
Object.keys(sockets.sockets).forEach((item) => {
  console.log("TODO: Item:", sockets.sockets[item].id)            
})

Socket.io v2.0.3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X