1、轮询的实现原理:开发人员在客户端使用定时器,每隔指定时间向服务器发起一次请求,服务器收到请求后检查是否有新数据或事件,并将其返回给客户端作为响应。客户端收到响应后,处理数据或事件,并随后发送下一个请求。
2、代码实现:
// 客户端代码
function getNews() {
fetch('/api/data')
.then(res=> {
// 处理服务器响应的数据
console.log(res.data)
// 继续下一次轮询
setTimeout(getNews, 5000);
});
}
// 开始轮询
getNews();
3、长轮询的实现原理:客户端发送一个HTTP请求给服务器,并保持连接打开,直到服务器有新的数据或事件时才返回响应给客户端。在这期间,服务器会一直保持连接打开,直到超时或有新数据或事件。
// 客户端代码
function longGetNews() {
fetch('/api/data')
.then(res=> {
if (res.status === 204) {
// 服务器返回204表示没有新数据或事件,继续进行长轮询
longGetNews();
} else if (res.status === 200) {
// 服务器返回200表示有新数据或事件,处理数据并进行下一次长轮询
.then(res=> {
console.log(res.data);
// 继续进行长轮询
longGetNews();
});
}
});
}
//开始长轮询
longGetNews()