Domanda

Sto giocando un po' con XmlHttpRequestObjects grezzi + Comet Long Polling.(Di solito, lascio che sia GWT o un altro framework a gestirlo per me, ma voglio saperne di più.)

Ho scritto il seguente codice:

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()">...

Ho avvolto il longPoll() richiamare un'istruzione if che controlli status > 0, perché ho riscontrato che quando lascio la pagina (navigando altrove o ricaricandola), viene inviata un'ultima chiamata cometa non necessaria. [E su Firefox causa anche gravi problemi durante il ricaricamento della pagina, per qualche motivo che non capisco ancora del tutto.]

Domanda: È questo status controllare il modo corretto di gestire questo problema o esiste una soluzione migliore?

È stato utile?

Soluzione

La mia risposta attuale, fino a prova contraria, è che la soluzione è corretta.

Altri suggerimenti

Mi piace la semplicità di questo ciclo .... penso lo script lato server deve dormire o almeno ad anello fino a quando non ottiene nuovi dati prima della sua polling lungo considerata anche se questo è solo il polling normale. Vorrei anche aggiungere qualcosa per verificare se il rich non riesce però. involucro che in una prova Bloch cattura dovrebbe fare il trucco

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top