Le sugiero encarecidamente invertir algo de tiempo en Comet, pero no conozco una implementación real o biblioteca que pueda usar. Para una especie de "panel de control de callcenter" de una aplicación web que implicaba actualizar el agente y el estado de la cola de llamadas para un Callcenter activo, desarrollamos una solución interna que funciona, pero está muy lejos de una biblioteca que podría usar. .
Lo que hicimos fue implementar un pequeño servicio en el servidor que habla con el sistema telefónico, espera nuevos eventos y mantiene una fotografía de la situación. Este servicio proporciona un pequeño servidor web.
Nuestros clientes web se conectan a través de HTTP a este servidor web y solicitan la última foto (codificada en XML), la muestra y luego vuelve a aparecer, solicitando la nueva foto.El servidor web en este punto puede:
- Devuelve la nueva foto, si es que existe
- Bloquear el cliente durante unos segundos (30 en nuestra configuración) a la espera de algún acontecimiento que ocurr y cambiar la fotografía. Si no se generó ningún evento en ese punto, devuelve la misma foto, solo para permitir que la conexión permanezca activa y no se agote el tiempo del cliente.
De esta manera, cuando los clientes sondean, obtiene una respuesta en 0 a 30 segundos como máximo. Si ya se generó un nuevo evento, lo obtiene de inmediato), de lo contrario, se bloquea hasta que se genere un nuevo evento.
Básicamente se trata de sondeo, pero es un poco inteligente para no sobrecalentar el servidor web. Si Comet no es tu respuesta, estoy seguro de que esto podría implementarse usando la misma idea, pero usando AJAX o codificando más extensamente en JSON para obtener mejores resultados. Esto fue diseñado antes de la era AJAX, por lo que hay mucho margen de mejora.
Si alguien puede proporcionar una implementación liviana real de esto, ¡genial!
@Rachel - Actualizaciones en vivo para que pueda ver lo que otros están haciendo. Bueno para sitios como StackOverflow y para aplicaciones web para colaboración como Google docs. –
Cualquiera que haga este tipo de cosas en 2016 probablemente encuentre websockets como una mejor opción para este tipo de comunicación. – Shadow
No estoy seguro de que exista. Para hacerlo conceptualmente más simple para la aplicación, supongo que podría implementar una capa de transporte sobre las solicitudes de sondeo, y así eliminar la responsabilidad de la votación de la lógica de la aplicación. Tal vez alguien incluso ya implementó esto? Editar: Aparentemente se llama reverse Ajax y Comet, pero hasta ahora parece que tiene que implementarlo usted mismo. Una biblioteca de JavaScript para esto, ¿alguien? –