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.