2016-09-26 4 views
2

У вас все наладится и работает правильно с 2 серверами Amazon EC2, на которых работает мое приложение-узел. В настоящее время сидит за балансировщиком нагрузки приложений.Горизонтальное масштабирование socket.io через несколько экземпляров Amazon EC2

Я излучающий сокет сообщение, используя код, как этого

const ioredis = require('socket.io-redis');     
io = require('socket.io')(server); 

io.adapter(ioredis({ 
    host: 'localhost', 
    port: 6379 
})); 


io.to('roomName').emit('message', data); 

Однако при испускании сообщения, используя socket.io, сообщение передается только с сервера исходящего узла.

Сервер 1 выдает сообщение socket.io -> Любой, подключенный к Серверу 1, слышит сообщение, но никто, подключенный к Серверу 2, не отвечает.

Сервер 2 генерирует сообщение socket.io -> Любой, подключенный к Серверу 2, слышит сообщение, но никто, подключенный к Серверу 1, не отвечает.

Мне нужна помощь в том, как выпустить сообщение socket.io с сервера 1 и либо передать его всем остальным серверам, возможно, используя один экземпляр redis на отдельном сервере?

ИЛИ

есть другой сервер в качестве эмиттерного сокета этого сервера 1 и сервера 2 передачи и приема сообщений от сокета.

Не совсем уверен, какой вариант является лучшим и правильным способом, любая помощь будет оценена по достоинству.

ответ

2

Мне удалось решить проблему, создав третий сервер, установив на него Redis и установив для всех остальных серверов этот единственный экземпляр redis.

Теперь сообщения сокетов передаются на все серверы независимо от исходного сервера.

Смежные вопросы