Socket.io: So erhalten Sie alle Zimmer

Erstellt am 21. Nov. 2014  ·  9Kommentare  ·  Quelle: socketio/socket.io

1630 fügt bereits Unterstützung für .clients([room], fn); , um eine Liste von Socket-IDs in einem Raum abzurufen. Ich habe eine PR an @FREEZX gesendet, um auch die Methode .roomClients([socketid],fn) hinzuzufügen, um eine Liste der Räume zu erhalten, in denen sich die Socket-ID befindet.

Dies war in 0.9.x mit io.sockets.manager.roomClients[socket_id] und funktionierte bei Verwendung mit RedisStore über mehrere Knoten hinweg.

Es war auch möglich, einen Hash aller Zimmer mit io.sockets.manager.rooms aber ich sehe dies in 1.x nicht. Es gibt io.sockets.adapter.rooms aber das funktioniert nicht über Knoten hinweg, soweit ich sehen kann.

Es ist möglich, diese Daten mit den beiden oben genannten Funktionen zu erhalten. Zuerst sollten Sie alle Socket - IDs im Raum ‚‘ dann roomClients rufen immer wieder die Räume zu erhalten und diejenigen , verschmelzen aber es bedeutet , n Anrufe roomClients machen, wo , wie es so einfach war , wie das Lesen von io.sockets.manager.rooms Objekt in 0.9.x

enhancement

Hilfreichster Kommentar

Ich benutze io.sockets.adapter.rooms

Alle 9 Kommentare

:+1:

+1 in diesem Fall. Sie können nicht einmal ein anständiges Chat-System erstellen, ohne Räume aufzulisten.

(UND)

:+1:

Hat jemand eine Lösung für den Zugang zu allen Räumen?

Geschlossen von https://github.com/socketio/socket.io-redis/pull/168.

io.adapter.allRooms(function (err, rooms) {
  console.log(rooms); // an array containing all rooms (accross every node)
});

Ich verwende 2.0.4 und io.adapter.allRooms funktioniert nicht. Irgendeine Idee?

Ich benutze io.sockets.adapter.rooms

@wangdalang können Sie bitte ein Codebeispiel zeigen und einen Link zu den Dokumenten dafür verlinken. Ich kann es anscheinend nicht finden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen