Socket.io: bagaimana cara membersihkan kamar?

Dibuat pada 29 Agu 2017  ·  5Komentar  ·  Sumber: socketio/socket.io

seperti io.to("chat").clear() , semua socket di room "chat" akan keluar

Komentar yang paling membantu

saya memilih untuk menambahkan. room.kick() fungsi di mana Anda dapat meneruskan id tertentu, array, atau 'ALL" untuk menghapus semua orang

Semua 5 komentar

Kamar @wendux dibuat dan dihapus secara otomatis. Itu berarti ketika ruangan itu kosong, tidak ada lagi klien yang tersisa di dalamnya, itu akan dihapus.
Anda dapat melakukan ini untuk menghapus semua klien dari ruang:

io.of('/').in('chat').clients((error, socketIds) => {
  if (error) throw error;

  socketIds.forEach(socketId => io.sockets.sockets[socketId].leave('chat'));

});

https://socket.io/docs/server-api/#namespace -clients-callback

Untuk melengkapi jawaban @rrllalloshi , dalam konfigurasi multi-server Anda harus menggunakan metode removeLeave dari adaptor:

io.of('/').in('chat').clients((error, socketIds) => {
  if (error) throw error;

  socketIds.forEach(socketId => io.of('/').adapter.remoteLeave(socketId, 'chat'));

});

Referensi

Kamar @wendux dibuat dan dihapus secara otomatis. Itu berarti ketika ruangan itu kosong, tidak ada lagi klien yang tersisa di dalamnya, itu akan dihapus.
Anda dapat melakukan ini untuk menghapus semua klien dari ruang:

io.of('/').in('chat').clients((error, socketIds) => {
  if (error) throw error;

  socketIds.forEach(socketId => io.sockets.sockets[socketId].leave('chat'));

});

https://socket.io/docs/server-api/#namespace -clients-callback

itu tidak berfungsi di socket.io 2.2.0

Mengapa tidak ada panggilan sederhana untuk menghapus semua soket dari sebuah ruangan? Ini adalah kasus penggunaan yang sangat umum

saya memilih untuk menambahkan. room.kick() fungsi di mana Anda dapat meneruskan id tertentu, array, atau 'ALL" untuk menghapus semua orang

Apakah halaman ini membantu?
0 / 5 - 0 peringkat