情景:开发聊天系统的时候常常会使用长连接来保证消息的即时性,然而长连接也会不可避免的因为网络延时或断网而断开,ajax长连接如何检测到网络断开了?其实原来很简单,但可能很多人还不知道,就是为ajax设置超时时间,当ajax超过定义的时间就会抛出错误,我们就能检测到错误而做我们想要的操作了。我们以jquery的ajax为例写一个简单的原理逻辑。
//检测失败重连逻辑
var ajax;
//ajax函数
function ajaxTest(){
ajax = $.ajax({
'url': 'url',
'timeout':10000, //10秒超时
'success':function(response){
//正常成功执行
},
'error':function(jqXHR, textStatus, errorThrown){
//出错,网络超时等重新连接
ajax.abort();//丢弃原有ajax
ajaxTest(); //重连
}
})
}