【发布时间】:2014-05-20 08:38:53
【问题描述】:
我正在 PHP/Node.js 应用程序中实现成功的长轮询。我创建了一个例程,用于在计算机唤醒后(睡眠模式后)启动长轮询 AJAX 请求,如下所示。
问题是 AJAX 请求由于 Internet 连接而失败,因为它需要一些时间来准备,这会导致 AJAX 请求失败。我需要再次调用此请求,直到互联网恢复正常,但我无法找到任何方法来知道上一个请求是否未能发送新请求并跟踪其状态。
我没有使用 Jquery,也不想使用它。
如果直接 AJAX 调用在超时秒内没有到达服务器,我可以为它们创建超时,但是长轮询请求状态在服务器上挂起 40 秒,我需要检测它是否在 2 秒后失败发送后的秒数。
xmlHTTP对象有什么解决办法吗?
非常感谢您的帮助。谢谢。
var program ={
init: function(){
this.isSleep = function(lastTime){
var lastTime = lastTime;
clearTimeout(program.tt)
program.tt = setTimeout(function(){
var currentTime = new Date().getTime();
if(currentTime > (lastTime + 2000*2) ){
// request fails if the internet connection was not ready
ajax.call({ // long polling request......});
}
program.isSleep(new Date().getTime());
}, 2000);
};
this.isSleep(new Date().getTime());
}
}
【问题讨论】:
-
继续请求正常请求,直到您获得成功的 200OK 响应。一旦你得到它,然后开始你的长轮询。你可以为它使用一个标志。
-
我不想在长轮询之前发出 ping 请求..
标签: javascript ajax