Socket.io: كيف تحصل على جميع الغرف

تم إنشاؤها على ٢١ نوفمبر ٢٠١٤  ·  9تعليقات  ·  مصدر: socketio/socket.io

1630 يضيف بالفعل دعمًا لـ .clients([room], fn); للحصول على قائمة بمعرفات المقبس في الغرفة. لقد أرسلت PR إلى FREEZX لإضافة الطريقة .roomClients([socketid],fn) أيضًا للحصول على قائمة بالغرف التي يوجد بها معرّف المقبس.

كان هذا ممكنًا في 0.9.x مع io.sockets.manager.roomClients[socket_id] وكان يُستخدم للعمل عبر عقد متعددة عند استخدامه مع RedisStore.

كان من الممكن أيضًا الحصول على تجزئة لجميع الغرف بـ io.sockets.manager.rooms لكنني لا أرى هذا متاحًا في 1.x. هناك io.sockets.adapter.rooms لكن هذا لا يعمل عبر العقد بقدر ما أستطيع رؤيته.

من الممكن الحصول على هذه البيانات باستخدام الوظيفتين المذكورتين أعلاه. أولاً ، احصل على جميع معرّفات المقبس في الغرفة '' ، ثم اتصل بـ roomClients بشكل متكرر للحصول على الغرف ودمجها ، لكن هذا يعني إجراء مكالمات n إلى roomClients ، حيث كان الأمر بسيطًا مثل قراءة الكائن io.sockets.manager.rooms في 0.9.x

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 التقييمات