Pregunta

Me estoy jugando un poco con XmlHttpRequestObjects primas + Comet largo de sondeo. (Por lo general, que dejaría GWT u otro mango marco de este para mí, pero quiero aprender más sobre él.)

Me escribió el siguiente 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()">...

Me envolvió la llamada longPoll() en una sentencia if que comprueba status > 0, porque me encontré, que cuando salgo de la página (por la navegación en otro lugar, o recarga del mismo), se envía una última llamada cometa innecesaria. [Y en Firefox, incluso causa problemas graves cuando se hace una recarga de la página, por alguna razón que no entiendo completamente todavía.]

Pregunta: Es que status comprobar la forma correcta de manejar este problema, o hay una solución mejor?

¿Fue útil?

Solución

Mi respuesta actual - hasta falsa probada -. Es, que la solución es correcta

Otros consejos

i como la simplicidad de este bucle .... creo que el script del lado del servidor tiene que dormir o al menos en bucle hasta que obtiene nuevos datos antes de su sondeo considerada durante mucho tiempo, aunque esto es sólo de sondeo normal. También me gustaría añadir algo para comprobar si el reques falla sin embargo. envoltorio que en un intento de captura Bloch debe hacer el truco

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top