Eu sugeriria fortemente investir algum tempo no Comet, mas não conheço uma implementação ou biblioteca real que você possa usar.
Para uma espécie de "painel de controle do callcenter" de um aplicativo Web que envolvia a atualização do status do agente e da fila de chamadas para um Callcenter ativo, desenvolvemos uma solução interna que funciona, mas está longe de uma biblioteca que você poderia usar.
O que fizemos foi implementar um pequeno serviço no servidor que fala com o sistema telefônico, aguarda novos eventos e mantém uma fotografia da situação. Este serviço fornece um pequeno servidor web.
Nossos clientes da Web se conectam via HTTP a este servidor da Web e solicitam a última foto (codificada em XML), a exibem e depois continua novamente, solicitando a nova foto. O servidor da web neste momento pode:
- Retorne a nova foto, se houver uma
- Bloqueie o cliente por alguns segundos (30 em nossa configuração), aguardando a ocorrência de algum evento e altere a fotografia. Se nenhum evento foi gerado nesse ponto, ele retornará a mesma foto, apenas para permitir que a conexão permaneça ativa e não exceda o tempo limite do cliente.
Dessa forma, quando os clientes fazem pesquisas, obtém uma resposta em 0 a 30 segundos no máximo. Se um novo evento já foi gerado, ele será obtido imediatamente); caso contrário, ele será bloqueado até que um novo evento seja gerado.
É basicamente pesquisa, mas é um pouco inteligente para não superaquecer o servidor da web. Se Comet não for sua resposta, tenho certeza de que isso poderia ser implementado usando a mesma ideia, mas usando mais extensivamente AJAX ou codificando em JSON para obter melhores resultados. Isso foi projetado antes da era AJAX, para que haja muito espaço para melhorias.
Se alguém puder fornecer uma implementação leve e real disso, ótimo!