Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ELB + EC2 + Socket.io + MySQL

                  --- EC2 >> Node.js + socket.io
                /
Client >> ELB --
                \
                  --- EC2 >> Node.js + socket.io


[RDS MySQL - EC2 instances communicate to this]

Atualmente, na minha aplicação em node, eu possuo uma conexão socket.io na qual eu deixo salvo localmente em objetos e arrays algumas informações sobre os usuários que estão no socket.io conectados.

A minha dúvida é... se eu levantar mais de um servidor, como irá se comportar o meu socket.io ? se o usuário se conectar no socket 1, ele não vai ser acessível no socket 2 e vice-versa... isso é importantíssimo para o funcionamento da minha aplicação, visto que eu disparo os eventos de socket para o socket.id e não para rooms.

Outra dúvida... os usuários vão conseguir se conectar em ambos os sockets das aplicações através do load balancer ?

Obrigado

2 respostas

Oi Diego, você caiu em um problema clássico de sistema que mantém estado no servidor.. quando subir o outro, não vai rolar essa sua lista.. a maneira mais usada para resolver isso é usar uma terceira ferramenta para guardar os usuários.. um redis ou ehcache da vida... você manteria os usuários nesse storage externo e recuperaria sempre no inicio da aplicação.

solução!

Eu resolvi esse problema usando o socket-io-redis se conectando em uma outra maquina rolando o Redis.