Escale node.js socket.io con 3 servidores

Sé que hay muchas preguntas y respuestas sobre este problema en la red, pero no puedo hacerlo funcionar.

Tengo un servidor escrito en node.js y escuchar conexiones con socket.io

Ahora, los sockets pueden intercambiar mensajes entre ellos, como un chat y estoy transmitiendo los mensajes entrantes a todos los demás sockets en el servidor.

quiero correr mi node server en 3 servidores diferentes, cada uno de ellos tiene una IP diferente, llamémoslos: SERVER1, SERVER2 y SERVER3. Aquí viene mi confusión, si estoy enviando un mensaje desde un socket que se conectó a SERVER1, Cómo los enchufes que se conectaron a SERVER2 y SERVER3 verán este mensaje?

Me enteré de RedisStore, RabbitMQ y otras cosas, pero no puedo encontrar un buen artículo/publicación/libro que pueda explicarme cómo hacerlo bien...

¿Puede alguien ayudarme por favor?

preguntado el 22 de mayo de 12 a las 15:05

1 Respuestas

Creo que RedisStore hace esto automáticamente por ti, aquí hay una buena publicación al respecto: http://www.ranu.com.ar/2011/11/redisstore-and-rooms-with-socketio.html

¿Cómo se hace esto internamente?

Bueno, como habrá escuchado, Redis, RabbitMQ, ZeroMQ, etc. tienen funcionalidad pub-sub, lo que significa que puede suscribirse a canales y publicar información en ellos (para todos los pares conectados):

https://github.com/mranney/node_redis#publish--subscribe

Entonces, el servidor A, B y C están suscritos al mismo canal. Cuando un cliente conectado al servidor A quiere enviar un mensaje para todos los usuarios conectados a la sala de chat "js", por ejemplo, envía un mensaje al servidor A y el servidor A publica un mensaje en el canal "js". Todos los demás servidores reciben ese mensaje y lo transmiten a todos sus clientes.

contestado el 22 de mayo de 12 a las 15:05

Entonces, quiere decir que uno de mis servidores debe ejecutar solo un redis servidor y mis otros dos servidores ejecutarán mi node/socket.io código del servidor y suscribir todos los mensajes de ingresos al redis ¿servidor? - udidu

Sí, esa es la idea, pero todos los pares conectados deben publicar y suscribirse a Redis. - alessioalex

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.