我在jquery中实现了彗星客户端,如下所示:
$(document).ready(function () {
comet();
});
function comet(){
var cometJSON = {
'comet': 'id'
}
$.ajax({
type: "POST",
url: "http://localhost:8080/comet",
data: JSON.stringify(cometJSON),
async: true, /* Set async request*/
cache: false,
timeout:50000, /* Timeout in ms */
success: function(data){
console.log('suc');
eventReceived(data);
},
error: function(jqXHR, textStatus, errorThrown){
console.log("error: "+textStatus);
},
complete: function(jqXHR, textStatus){
console.log("Send new comet!");
comet();
}
});
};
一切正常,但我的浏览器标签中总是有嘈杂的微调器,我的状态面板总是显示:等待localhost,我该如何解决?
答案 0 :(得分:4)
微调器指示正在进行的连接,这正是发生的事情 - 在收到答案后,在complete
部分中您立即触发新请求,因此大多数时间都在进行连接(几乎总是)。为了避免这种情况,您需要在新请求之前做一个延迟 - setTimeout(comet, 1000)
听起来像是上一个comet();
答案 1 :(得分:1)
我前段时间实现了同样的事情并遇到了同样的问题:
https://github.com/tenorviol/cometjax
要解决永远微调器的问题,请在初始ajax调用上设置超时,例如:
$(document).ready(function () {
setTimeout(function() {
comet();
}, 10);
});