2016-08-24 8 views
0

Ich arbeite derzeit an einer einfachen socketio Anwendung, in der ich einige Parameter zu envents sende und ich sie in jedem Sockel speichern.Socketio 1.0 erhalten Attribute von allen Clients

socket.on('add user', function (data) { 
    if (addedUser) return; 

    // we store the username in the socket session for this client. 
    socket.nickname = data.nickname; 
    socket.userId = data.userId; 
... 

dann bin ich alle socketio bekommen Kunden var io.engine.clients mit und ich versuche, dass, wie dies in anderen Ereignisparameter zu erhalten:

socket.on('new message', function (data) { 

var clientsRoom = io.engine.clients; 

for(var c in clientsRoom){ 
    console.log(" Client: " + c.userId); //Error 
    console.log(" Client: " + c); //outputs the socket ID 
    console.log(" Client: " + c['userId']); //Error 
    } 
... 

aber ich nicht in der Lage bin zu erhalten meine userID vorher für alle Steckdosen gespeichert. Was mache ich falsch?

Danke.

Antwort

2

Statt io.engine.clients Sie io.sockets.sockets verwenden sollten (sie nicht gleich sind, fügt socket.io eine zusätzliche Schicht auf der Oberseite der engine.io). Vergewissern Sie sich außerdem, dass Sie es als ein Objekt behandeln, kein Array:

var clientsRoom = io.sockets.sockets; 

for (var id in clientsRoom) { 
    var c = clientsRoom[id]; 
    console.log(" Client: " + c.userId); 
    console.log(" Client: " + id); 
} 
+0

Wenn ich in meinem Code ein Protokoll setzen nach socket.userId = data.userId; Drucken socket.userId druckt mir meine Benutzer-ID. Aber mit Ihrem Code, wenn man versucht, es zu bekommen, ist mir der Rückkehr: Auftraggeber: undefined :-( – walolinux

+0

@walolinux habe ich den Code, den ich mit in einem Gist getestet: https://gist.github.com/robertklep/080f62fc6d7a506d8f5a55bc3bf61252 – robertklep

+0

Yep , funktioniert, aber ich bin zu realisieren, dass ich alle angeschlossenen Steckdosen in einem Raum zur Liste benötigen, nicht im allgemeinen und dann userId erhalten ... – walolinux

Verwandte Themen