socket.io - передача событий между узлами
Я был вдохновлен этим: http://socket.io/docs/using-multiple-nodes/, и прямо сейчас я хочу синхронизировать мои два экземпляра socket.io через адаптер 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 (порт 3000) - я вижу 'соединение. test = 1', это хорошо, но консоль второго сервера все еще чистая. Я хочу, чтобы второй сервер (порт 4000) сделал то же самое (выведите "connection = 1").
Что я делаю не так? Можете показать пример использования адаптера?
Спасибо
1 ответ
Если вы подключаетесь только к server1:3000
нет никакого способа io.on('connection', ...)
будет срабатывать на server2:4000
- в конце концов, вы не подключены к этому серверу.
Каждый клиент будет подключаться только к одному из ваших серверов. Если вы не используете адаптер Redis, клиенты, подключенные к разным серверам, не смогут обмениваться данными. Теперь с помощью адаптера Redis серверы узнают о клиентах друг друга и могут передавать сообщения всем подключенным клиентам всех серверов.