usar tutorial socket node iniciar español como socket.io rabbitmq message-queue

socket.io - tutorial - ¿Por qué necesita una cola de mensajes para un chat con sockets web?



socket io tutorial español (3)

No creo que RabbitMQ deba usarse para una sala de chat, personalmente. al menos, no en la parte "chat" o "sala" de la aplicación.

a menos que sus salas de chat no se preocupen por la historia en absoluto, y creo que la mayoría se preocupa por eso, una cola de mensajes como RMQ no tiene mucho sentido.

sería mejor guardar el mensaje en una base de datos y mantener un marcador para cada usuario para decir qué mensaje vieron por última vez.

ahora, puede terminar necesitando algo como RMQ para facilitar el proceso de la aplicación de chat. puede descargar el proceso de los servidores web, por ejemplo, y enviar todos los mensajes a través de RMQ a un servicio de fondo que actualice la base de datos y las capas de la memoria caché, por ejemplo.

esto le permitiría escalar los servidores front-end web mucho más rápido y admitir más usuarios por servidor web. y eso suena como un buen uso de RMQ, pero no es específico de las aplicaciones de chat. es solo una buena práctica para escalar aplicaciones / sistemas web.

la clave, en mi experiencia, es que RMQ no es responsable de la entrega de los mensajes a los usuarios / salas de chat. eso ocurre a través de websockets o tecnologías similares que están diseñadas para ser usadas por usuario.

He visto muchos ejemplos en Internet de chats usando sockets web y RabbitMQ ( https://github.com/videlalvaro/rabbitmq-chat ), sin embargo, no entiendo por qué es necesaria una cola de mensajes para una aplicación de chat .

¿Por qué no está bien enviar el mensaje desde el navegador a través de sockets web al servidor y luego al servidor para transmitir ese mensaje al resto de los navegadores activos usando nuevamente sockets web con método de transmisión? (tal vez me falta algo)

Ejemplos de pseudocódigo (usando socket.io):

// client (browser) socket.emit("message","my great message that will be received by all" // server (any server can be, but let''s just say that it is also written in JavaScript socket.on("message", function(msg) { socket.broadcast.emit(data); }); // the rest of the browsers socket.on("message", function(msg) { // display on the screen the message });


Uhmm, no entendí exactamente porque estás buscando ...

pero en RabbiMQ siempre publica un mensaje en un exchange y consume el mensaje usando una queue .

para "transmitir ese mensaje" necesitas consumirlo.

Espero eso ayude


Respuesta simple ...

Para una aplicación de chat simple, no necesita una cola (por ejemplo, el señalizador haría exactamente esto sin la cola).

Normalmente, aunque las aplicaciones del mundo real no son solo "una simple aplicación de chat", la cola podría representar el estado actual de la sala para que nuevos usuarios se unan, de modo que el servidor sabe qué lista de mensajes se publicará cuando eso suceda.

También vale la pena señalar que las colas de mensajes a menudo se implementan cuando se desea una mensajería confiable (por ejemplo, bus de servicio) para garantizar que todos los mensajes lleguen a donde deberían ir, incluso si el primer intento falla. Por lo tanto, es probable que la cola se incluya en muchos ejemplos como iniciador predeterminado para la posterior resolución de problemas.