1.短轮询
短轮询的原理很简单,每隔一段时间客户端就发出一个请求,去获取服务器最新的数据,一定程度上模拟实现了即时通讯。
- 优点:兼容性强,实现非常简单
- 缺点:延迟性高,请求中有大半是无用,非常消耗带宽和服务器资源,影响性能
- 应用: 二维码扫码确认、信息通知
- 实现方式:
借用定时器实现短轮询
created(){
this.shortPolling = setInterval(()=>{
that.getRuset()
},5000)
},
methods:{
var that = this
this.$axios('xxx',post).then(res=》{
if(res.code === 200){
// 拿到具体的业务场景
...
// 定时器是否清除由具体的业务场景决定
clearInterval(this.shortPolling)
}
})
}
2.长轮询
客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
- 优点:兼容性好,在无消息的情况下不会频繁的请求,资源浪费较小
- 缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护
- 应用: webQQ、开心网、校内,Hi网页版、Facebook IM等等
- 实现方式:
主要由后端hold住连接,我们就是正常的发送请求即可
getResult(){
var that = this
this.$axios('xxx,',post).then(res=>{
if(res.code === 200){
...
}else{
this.getResult()
}
...
})
}