Web即时通信技术 -- 短轮询

短轮询是一种客户端与服务器通信的技术,通过定时发送请求获取最新数据。其优点是实现简单,缺点是频繁的请求可能增加服务器压力且实时性受限。本文展示了客户端JavaScript和服务器端Express实现短轮询的示例,讨论了时间间隔控制的挑战。
摘要由CSDN通过智能技术生成

原理

  • 客户端向服务器端发送一个请求,服务器返回数据,然后客户端根据服务器端返回的数据进行处理;
  • 客户端继续向服务器端发送请求,继续重复以上的步骤,如果不想给服务器端太大的压力,一般情况下会设置一个请求的时间间隔。

优缺点

优点:不需要额外的开发成本,请求数据,解析数据,作出响应,仅此而已,然后不断重复。

缺点:

  • 不断的发送和关闭请求,对服务器的压力会比较大,因为本身开启Http连接就是一件比较消耗资源的事情;
  • 轮询的时间间隔不好控制。如果要求的实时性比较高,显然使用短轮询会有明显的短板,如果设置interval的间隔过长,会导致消息延迟,而如果太短,会对服务器产生压力。

客户端实现

<!--轮循 polling -->  
<div id="clock"></div>  
<script>    
    let clock = document.getElementById('clock')    
    setInterval(() => {      
        let xhr = new XMLHttpRequest;      
        xhr.open('get','/clock',true)      
        xhr.onreadystatechange = function() {        
            if(xhr.readyState === 4 && xhr.status === 200) {          
                clock.innerText = xhr.responseText          
            }           
        }      
        xhr.send()    
    }, 1000);
</script>

服务器端实现 

let express = require('express')
let app = express()
app.use(express.static(__dirname))
app.get('/clock',function(req,res) {  
    res.send(new Date().toLocaleString())
})
app.listen(3000)

运行效果

 参考代码:GitHub - liu-zq/ShortPollingExamples

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值