2017-01-19 40 views
7

Zastanawiam się, czy Socket.io będzie wewnętrznie zrobić księgowości i umożliwić użytkownikowi pobrać listę klientów, czy będziemy ręcznie trzeba śledzić listy podłączony klienci tak:wewnętrzni klienci socket.io lista lokalizacja

var Server = require('socket.io'); 
var io = new Server(3980, {}); 

const clients = []; 

io.on('connection', function (socket) { 

    clients.push(socket); 

    socket.on('disconnect', function() { 

     clients.splice(clients.indexOf(socket),1); 

    }); 
}); 

robi socket.io przechowywać listę połączeń, gdzieś jak:

io.connections 

lub

io.sockets 

ma więcej problemów niż oczekiwałem, aby znaleźć te informacje, dla nowszych wersji pliku socket.io. Używam wersji =>"socket.io": "^1.7.2"

+0

sprawdzić ten link http://stackoverflow.com/questions/6563885/socket-io-how-do-i-get-o-list-of-connected-sockets-clients – Dinesh

Odpowiedz

3

Może potrzebujesz to: io.sockets.connected

var clients = Object.keys(io.sockets.connected); 
+0

, który może być, przetestuje go - ale być specyficzne Potrzebuję obiektów połączenia z gniazdem, a nie identyfikatorów, więc może i t Object.values ​​(io.sockets.connected)? –

+1

następnie io.sockets.connected [socket_id] – onehalf

4

Poniższa funkcja daje tablicę obiektów Gniazdo:

function clients(namespace) { 
    var res = []; 
    var ns = io.of(namespace || "/"); 
    if (ns) { 
     Object.keys(ns.connected).forEach(function (id) { 
       res.push(ns.connected[id]); 
     }); 
    } 
    return res; 
}