.clients([room], fn);
サポートをすでに追加しています。 ソケットIDが含まれている部屋のリストを取得するために、メソッド.roomClients([socketid],fn)
も追加するために、PRを@FREEZXに送信しました。これは0.9.xでio.sockets.manager.roomClients[socket_id]
を使用して可能であり、RedisStoreで使用すると複数のノードで機能していました。
io.sockets.manager.rooms
ですべての部屋のハッシュを取得することも可能io.sockets.adapter.rooms
がありますが、私が見る限り、ノード間では機能しません。
上記の2つの関数を使用してこのデータを取得することができます。 最初に部屋のすべてのソケットIDを取得し、次にroomClientsを繰り返し呼び出して部屋を取得し、それらをマージしますが、これはroomClientsにn回の呼び出しを行うことを意味します。これは、0.9.xでio.sockets.manager.rooms
オブジェクトを読み取るのと同じくらい簡単でした。
:+1:
これに+1。 部屋をリストする機能がなければ、まともなチャットシステムを作ることさえできません。
(と)
:+1:
誰かがすべての部屋にアクセスするための解決策を持っていますか?
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)
});
2.0.4を使用していますが、io.adapter.allRoomsが機能しません。 何か案が?
私はio.sockets.adapter.roomsを使用します
@wangdalangは、コード例とそのドキュメントへのリンクを示していただけますか。 見つからないようです。
最も参考になるコメント
私はio.sockets.adapter.roomsを使用します