Escale node.js socket.io con 3 servidores
Frecuentes
Visto 3,571 veces
2
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?
1 Respuestas
4
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
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas node.js redis socket.io or haz tu propia pregunta.
Entonces, quiere decir que uno de mis servidores debe ejecutar solo un
redis
servidor y mis otros dos servidores ejecutarán minode/socket.io
código del servidor y suscribir todos los mensajes de ingresos alredis
¿servidor? - udiduSí, esa es la idea, pero todos los pares conectados deben publicar y suscribirse a Redis. - alessioalex