Здравствуйте!
Я написал некое подобие чата на socket.io и хочу его масштабировать на два сервера.
Прочитал вот это this:
socket.io/docs/using-multiple-nodes/#passing-event... настроил nginx и теперь клиент попадает на один из этих серверов.
Проблема в том что я использую переменную в каждом socket.io инстансе для того чтобы хранить список людей в комнате и названия этих комнат.
Если один человек подключился к одному инстансу, а другой к другому то они друг друга не видят.
Из вышеприведенной статьи прочитал про redis adpter. Я думал что я добавлю эти строки и мои два инстанса будут синхронизированы через redis. Но этого не произошло.
Вот мой код:
//FIRST SERVER (server1.js)
var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
var test = 0;
io.on('connection', function (socket) {
test+=1;
console.log("connection. test = " + test);
});
//SECOND SERVER (server2.js)
var io = require('socket.io')(4000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
var test = 0;
io.on('connection', function (socket) {
test+=1;
console.log("connection. test = " + test);
});
Когда клиент подключается к server1.js (port 3000) - я вижу 'connection. test = 1', это хорошо, но консоль в которой запущен второй инстанс остается пустой. Я хочу чтобы второй инстанс делал тоже самое (печатал 'connection = 1').
Что я делаю не так? Может кто нибудь знает где можно увидеть пример использования socket.io-redis
Спасибо