Комета (долго опрашивающий) и состояние XmlHttpRequest

Я играю вокруг немного с необработанным XmlHttpRequestObjects + Комета, Долго Опрашивающая. (Обычно, я позволил GWT или другому дескриптору платформы этого для меня, но я хочу узнать больше о нем.)

Я написал следующий код:

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

Я перенесся longPoll() призовите, если оператор, который проверяет на status > 0, потому что я встретился, что, когда я оставляю страницу (путем просмотра где-то в другом месте, или путем перезагрузки его), один последний ненужный вызов кометы отправляется. [И на Firefox, это даже вызывает серьезные проблемы при выполнении перезагрузки страницы, по некоторым причинам я еще не полностью понимаю.]

Вопрос: это status проверьте корректный способ решить эту проблему, или есть ли лучшее решение?

5
задан Chris Lercher 12 April 2010 в 19:22
поделиться