定义
轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输入输出”(Programmed I/O)。轮询法的概念是:由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。
一、在web上来说就是客户端每隔一段时间向服务端发送http请求,服务端收到请求后,无论是否有数据更新,都直接进行响应。
优缺点
一、优点
1、技术容易实现。
二、缺点
1、访问量大时,服务器压力非常大。
2、轮询时间不好控制。如果要求的实时性比较高,使用轮询会对服务器产生压力,如果设置的间隔时间太长,会导致消息延迟。
应用场景
| 【示例】在操作浏览器时,点击A页面的一个按钮,要弹出一个空白的B页面,我在A上进行特定操作时,B页面要跳转到A页面中选中的数据的URL所对应的位置。
- 那么弹出一个空页面前端使用window.open('/new_window/','_blank')
- B页面跳转:一个iframe标签,然后修改它的src属性。
- 操作A界面B页面监听——轮询
```javascript
<br /> || --- || 【示例】客户端```javascript<!--轮循 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>
服务器实现```javascript
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)
``` | | —- |
