Pergunta

Este bate -papo está usando "Pesquisa longa" ou "Streaming HTTP"?

http://go-mono.com/moonlight/chat.aspx

Foi útil?

Solução

Não é nada tão simples. Ele usa http://www.mibbit.com/chat, que é um cliente IRC completo escrito em JavaScript e Java. Blog em http://blog.mibbit.com/.

Editar: Aqui está a sua resposta.

A primeira parte que trabalhei foi a comunicação entre o navegador e o servidor. Isso é feito usando 2 xmlHttPrequests. O primeiro é simplesmente enviar dados do navegador para o servidor. Utiliza o Keep-Alive, para minimizar novas conexões.

O segundo XHR é o 'receber uma pesquisa preguiçosa'. Ele se conecta ao servidor e o servidor o abre até que haja mensagens disponíveis ou um tempo limite expire. Este também é mantido, então a próxima solicitação é a mesma conexão.

O que você acaba com 2 conexões é mantido aberto ao servidor, com pacotes (JSON neste caso) e alguns cabeçalhos HTTP de tempos em tempos. Para garantir que o servidor escalaria, escrevi um servidor da web personalizado em Java usando o NIO. Ele lida com todas as conexões em um único fio e, como eu disse, escala para dezenas de milhares de conexões.

Se o cliente solicitar uma nova conexão, ele enviará uma solicitação para o servidor da web, que se conecta e inicia o proxy etc. Ele também executa um servidor de identificação no caso das conexões IRC para que um servidor IRC possa identificar navegadores individuais. Eu observei as estruturas existentes etc. para fazer esse tipo de coisa, mas valorizei aprender como tudo funciona e pensei que meu caso de uso pode ser específico o suficiente para poder otimizar mais do que as estruturas gerais podem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top