长轮询

Comet、长轮询、HTTP推送
利用长时间保留的 HTTP 请求(“挂起的 GET”)来让服务器向浏览器推送 数据的技术,经常被称作 Comet。不过,有时候也有人用其他名字称呼这种技术,比如“保留 AJAX”、“AJAX 推送”或“HTTP 推送”。

通过将连接一直保持打开到有更新(长轮询),就可以把更新立即从服务器发送给客 户端。这样,长轮询就解决了消息交付延迟的问题,同时也消灭了空检查,减少了 XHR 请求次数和轮询的整体开销。在交付更新后,长轮询请求完成,然后客户端再 发送下一次长轮询请求,等待下一次更新

Ajax实现

// 长轮询 | comet | http推 | pull
function comet() {
nanoajax.ajax({
timeout:0,// xhr不设超时,取决浏览器超时
method: 'get',
url: '//localhost:3000/comet'
},function (code,response) {
if (code === 200) {
console.log(response)
comet()
} else {
setTimeout(() => {
comet()
}, 3000);
}
})
}
comet()