Socket.io: Cara mendapatkan semua kamar

Dibuat pada 21 Nov 2014  ·  9Komentar  ·  Sumber: socketio/socket.io

1630 sudah menambahkan dukungan untuk .clients([room], fn); untuk mengambil daftar id soket di sebuah ruangan. Saya mengirim PR ke @FREEZX untuk menambahkan metode .roomClients([socketid],fn) juga untuk mengambil daftar kamar tempat id soket berada.

Ini dimungkinkan di 0.9.x dengan io.sockets.manager.roomClients[socket_id] dan dulu bekerja di beberapa node saat digunakan dengan RedisStore.

Itu juga mungkin untuk mendapatkan hash dari semua kamar dengan io.sockets.manager.rooms tapi saya tidak melihat ini tersedia di 1.x. Ada io.sockets.adapter.rooms tetapi itu tidak berfungsi di seluruh node sejauh yang saya bisa lihat.

Dimungkinkan untuk mendapatkan data ini menggunakan dua fungsi di atas. Pertama-tama dapatkan semua id soket di kamar '' lalu panggil roomClients berulang kali untuk mendapatkan kamar dan gabungkan itu tetapi itu berarti membuat n panggilan ke roomClients, di mana sesederhana membaca objek io.sockets.manager.rooms di 0.9.x

enhancement

Komentar yang paling membantu

saya menggunakan io.sockets.adapter.rooms

Semua 9 komentar

:+1:

+1 untuk yang ini. Anda bahkan tidak dapat membuat sistem obrolan yang layak tanpa kemampuan untuk membuat daftar kamar.

(DAN)

:+1:

Apakah ada yang punya solusi untuk mendapatkan akses ke semua kamar?

Ditutup oleh 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)
});

Saya menggunakan 2.0.4 dan io.adapter.allRooms tidak berfungsi. Ada ide?

saya menggunakan io.sockets.adapter.rooms

@wangdalang dapatkah Anda menunjukkan contoh kode dan tautan ke dokumen untuk itu. Saya tidak bisa menemukannya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat