Pergunta

Estou brincando um pouco com o XMLHTTRPREQUESTOBJETO DE RAW + Pollings Comet Long. (Geralmente, eu deixaria o GWT ou outra estrutura para mim, mas quero aprender mais sobre isso.)

Eu escrevi o seguinte código:

function longPoll() {
  var xhr = createXHR(); // Creates an XmlHttpRequestObject
  xhr.open('GET', 'LongPollServlet', true);
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {

        if (xhr.status == 200) {
            ...
        }

        if (xhr.status > 0) {
            longPoll();
        }
    }
  }
  xhr.send(null);
}

...
<body onload="javascript:longPoll()">...

Eu enrolei o longPoll() Ligue para uma declaração IF que verifica status > 0, porque encontrei que, quando deixo a página (navegando em outro lugar ou recarregando -a), uma última chamada de cometa desnecessária é enviada. E no Firefox, até causa problemas graves ao fazer uma página recarregar, por algum motivo que ainda não entendo completamente.

Pergunta: É aquele status Verifique a maneira correta de lidar com esse problema ou existe uma solução melhor?

Foi útil?

Solução

Minha resposta atual - até que comprova falsa - é que a solução está correta.

Outras dicas

Gosto da simplicidade desse loop ... Eu acho que o script do lado do servidor precisa dormir ou pelo menos um loop até obter novos dados antes de serem consideradas longas pesquisas, embora isso seja apenas uma pesquisa normal. Eu também adicionaria algo para verificar se os requisitos falham. embrulhar isso em uma tentativa de pegar o Bloch deve fazer o truque

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