Socket.io: すべての部屋を取得する方法

作成日 2014年11月21日  ·  9コメント  ·  ソース: socketio/socket.io

1630は、部屋のソケットIDのリストを取得するための.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オブジェクトを読み取るのと同じくらい簡単でした。

enhancement

最も参考になるコメント

私はio.sockets.adapter.roomsを使用します

全てのコメント9件

:+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は、コード例とそのドキュメントへのリンクを示していただけますか。 見つからないようです。

このページは役に立ちましたか?
0 / 5 - 0 評価