彗星(长轮询)和XMLHttpRequest的状态
-
26-09-2019 - |
题
我在玩弄一点点加生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()
呼叫if语句,对于status > 0
检查,因为我遇到了,当我离开这个页面(通过浏览其他地方,或者重装吧),最后一个不必要的彗星呼叫发送。 <子> [和火狐,甚至做了重新加载页面时,由于某种原因,我不完全听懂了没有造成严重的问题。
问:是用于status
检查正确的方式来处理这个问题,或者是有没有更好的解决办法?
解决方案
我现在的回答 - 直到证明是错误的 - 是,该解决方案是正确的。
其他提示
我喜欢这个循环的简单....我想在服务器端脚本有睡眠或至少循环,直到它认为长轮询之前获取新的数据,虽然这只是正常的查询。我还要补充一点,以检查是否reques虽然失败。包裹在一个尝试捕捉布洛赫应该做的伎俩
不隶属于 StackOverflow