Sugeriría encarecidamente invertir algo de tiempo en Comet, pero no conozco una implementación o biblioteca real que pueda usar.
Para una especie de "panel de control del centro de llamadas" de una aplicación web que implicaba actualizar el estado del agente y la cola de llamadas para un Callcenter en vivo, desarrollamos una solución interna que funciona, pero que está muy lejos de una biblioteca que pueda 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 muestran y luego vuelven a pedir la nueva foto. El servidor web en este punto puede:
- Devuelve la nueva foto, si hay una
- Bloquee al cliente durante unos segundos (30 en nuestra configuración) esperando que ocurra algún evento y cambie 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 viva y no agote el tiempo de espera del cliente.
De esta manera, cuando los clientes sondean, obtiene una respuesta en un máximo de 0 a 30 segundos. Si ya se generó un nuevo evento, lo obtiene de inmediato), de lo contrario, se bloquea hasta que se genere un nuevo evento.
Es básicamente un sondeo, pero es un sondeo algo inteligente para no sobrecalentar el servidor web. Si Comet no es su respuesta, estoy seguro de que esto podría implementarse utilizando la misma idea pero utilizando más extensamente AJAX o codificación 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 ligera real de esto, ¡genial!