Stato Comet (polling lungo) e XmlHttpRequest
-
26-09-2019 - |
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?
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