保证与服务器的长时间联系,从而源源不段地获取信息
轮询,顾名思义就是不停地发送查询消息,一有新消息立刻更新,但是会有多次无用请求
长轮询,是轮询的升级版,需要服务器端的配合
websocket,HTML5的通信功能,建立一个与服务器端的专用接口ws协议来进行通讯
设置一个ajax请求函数,每次查询时被调用,
当没有信息返回时,服务器端被搁置,当前页面正常执行;
当有信息返回时,函数处理返回的数据,并迅速再次调用此函数发送一次请求
function send() {
let xhr = null;// 先设置xhr为空,为了轮询时再次调用函数对xhr重用,引发错误
xhr=new XMLHttpRequest();
// 第三个参数一定要设置为true,异步不阻塞,不会影响到后面JS的执行。
xhr.open('GET','server.php',true);
xhr.send();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var obj = JSON.parse(xhr.responseText)
console.log(xhr.responseText);
setTimeout(() => send(), 3000);
}
}
}
send()
与传统轮询相比,长轮询在服务器没的返回信息的时候进入等待,减少了普通轮询服务器无数次的空回复。
可以这样认为,长轮询使服务器每次的返回更有目的性,而不是盲目返回