Pregunta

Estoy haciendo el chat cometa con Erlang. Yo sólo uso una conexión (largo sondeo) para el transporte de mensajes. Pero, como es sabido, la conexión de votación larga no se puede permanecer conectado todo el tiempo. Cada vez que un nuevo mensaje llega o alcanza el tiempo de espera, se romperá y luego conectarse al servidor de nuevo. Si se envía un mensaje antes de que la conexión de volver a conectar, es un problema para mantener la integridad de la charla.

Y también, si un usuario abre más de una ventana con el cometa-charla, todos los mensajes de chat tienen que mantener sincronización, lo que significa que un usuario puede tener un montón de conexiones de larga votación. Por lo que es difícil de mantener todos los mensajes entregados a tiempo.

¿Debo construir una cola de mensajes para cada conexión? O ¿qué otra cosa mejor manera de resolver esto?

¿Fue útil?

Solución

Para mí parece forma más sencilla de tener una cola de procesos / mensajes por usuario conectado al chat (incluso tener más de una ventana de chat). De llevar un registro de fecha y hora del último mensaje de solicitud ventana de chat y cuando reconexión pedir mensajes después de esta fecha y hora. proceso de cola de mensajes debe mantiene mensajes sólo para un intervalo de tiempo razonable. En este escenario es el volver a conectar todo depende de cliente. En otro escenario, puede enviar una especie de ciervo late desde el servidor pero parece menos fiable para mí. No es la solución de problema con otra razón de la desconexión de tiempo de espera. Hay muchas variantes del lado del servidor cola como una cola por cliente, por usuario, por chat, por ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top