Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Bagaimana socket.io mengirim pesan ke beberapa server?

Socket.io menggunakan MemoryStore secara default, jadi semua klien yang terhubung akan disimpan dalam memori sehingga tidak memungkinkan (yah, tidak tenang tetapi lebih pada nanti) untuk mengirim dan menerima acara dari klien yang terhubung ke server socket.io yang berbeda.

Salah satu cara untuk membuat semua server socket.io menerima semua acara adalah bahwa semua server menggunakan pub-sub redis. Jadi, alih-alih menggunakan socket.emit, seseorang dapat memublikasikan ke redis.

redis_client = require('redis').createClient();
redis_client.publish('channelName', data);

Dan semua server soket berlangganan saluran itu melalui redis dan setelah menerima pesan, kirimkan ke klien yang terhubung dengannya.

redis_sub = require('redis').createClient();
redis_sub.subscribe('channelName', 'moreChannels');

redis_sub.on("message", function (channel, message) {        
    socket.emit(channel, message);
});

Hal Rumit!! Tapi tunggu, ternyata Anda tidak benar-benar membutuhkan kode semacam ini untuk mencapai tujuan. Socket.io memiliki RedisStore yang pada dasarnya melakukan apa yang seharusnya dilakukan oleh kode di atas dengan cara yang lebih baik sehingga Anda dapat menulis kode Socket.io seperti yang Anda tulis untuk satu server dan masih akan disebarkan ke server socket.io lain melalui redis.

Untuk meringkas socket.io mengirim pesan di beberapa server dengan menggunakan redis sebagai saluran, bukan memori.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. server pegas tidak dapat terhubung ke redis menggunakan klien jedis

  2. redis cluster reshard [ERR] Memanggil MIGRATE:ERR Syntax error

  3. Bagaimana cara menyusun daftar ke dalam struktur di Redis untuk mengurangi level teratas?

  4. Menerapkan ScaleGrid DBaaS untuk Redis™ di AWS Virtual Private Cloud (VPC)

  5. bagaimana cara mendapatkan kunci yang tidak cocok dengan pola tertentu di redis?