我已经在jquery中实现了comet客户端,如下所示:
$(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,我如何解决这个问题?
发布于 2011-06-15 05:15:06
微调指示一个正在进行的连接,这正是正在发生的事情--在你收到应答后,在complete部分你会立即触发一个新的请求,因此大部分时间(几乎总是)都有一个正在进行的连接。为了避免这种情况,您需要在新请求之前进行延迟- setTimeout(comet, 1000)听起来像是最后一个comet();的一个很好的替代方案
发布于 2011-06-15 05:12:02
我前段时间实现了同样的事情,遇到了同样的问题:
https://github.com/tenorviol/cometjax
为了解决永远旋转的问题,在最初的ajax调用中设置一个超时,例如:
$(document).ready(function () {
setTimeout(function() {
comet();
}, 10);
});https://stackoverflow.com/questions/6350152
复制相似问题