Я немного поиграю с необработанными XmlHttpRequestObjects + Comet Long Polling. (. Обычно, я бы позволил GWT или другой рамки ручка это для меня, но я хочу, чтобы узнать больше об этом)Комета (длинный опрос) и статус XmlHttpRequest
Я написал следующий код:
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()
вызов в оператор if, который проверяет для status > 0
, потому что я столкнулся с тем, что, когда я покидаю страницу (просматривая в другом месте или перезагружая ее), отправляется последний ненужный кометный вызов. [А на Firefox, это даже вызывает серьезные проблемы при выполнении перезагрузки страницы, по какой-то причине, я до конца не понимаю.]
Вопрос: Это status
проверить правильный способ справиться с этой проблемой, или есть лучшее решение?
Не могли бы вы просто взглянуть на любую существующую реализацию, например. GWT, как вы упомянули, jquery и т. Д.? – fig
@ fig-gnuton: Я не уверен, если действительно легко следовать сгенерированным кодом javascript (я не гуру javascript ...) –
Если вы знаете достаточно, чтобы играть с необработанным XHR, вы будете не имеют проблем, глядя на JQuery или другие библиотеки. У них есть исходные версии, которые полностью комментируются. – fig