什么是轮询机制?

什么是轮询机制?

一、什么是轮询:

轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输入输出”(Programmed I/O)。轮询法的概念是:由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始 。

以上是来自百度百科对轮询的解释。

二、轮询机制:

1、轮询是用来解决服务器压力过大的问题的。如果保持多个长连接,服务器压力会过大,因此。专门建立一个轮询请求的接口,里面只保留一个任务id,只需要发送任务id,就可以获取当前任务的情况。如果返回了结果,轮询结束,没有返回则等待一会儿,继续发送请求。

2、轮询不应该直接暴露出来,应该写在接口里面。比如说。请求一个列表,列表接口里面再调用轮询接口。

3、列表接口发送请求,返回任务id,2秒后,根据任务id发送轮询接口请求,返回结果为无。。继续等待,4秒后,继续发送轮序请求,请求若返回结果,上抛到列表接口结果,列表接口结果继续上抛,请求结束。

三、长轮询

长轮询本身不是一种真正的推送技术,而只是传统轮询技术的一个变种。然而,其能够在真正推送技术无法实现时模拟推送机制。

在长轮询机制中,客户端像传统轮询一样从服务器请求数据。然而,如果服务器没有可以立即返回给客户端的数据,则不会立刻返回一个空结果,而是保持这个请求等待数据到来(或者恰当的超时),之后将数据作为结果返回给客户端。

例如,BOSH是一个常见的、长久的、在TCP困难或无法实现的情况下(如在使用浏览器的情况下)使用长轮询模拟TCP的技术。这也是一种XMPP中隐含的技术,苹果公司将其用于iCloud推送支持。

通过以上对轮询机制的分析,我们发现不管是普通的轮询还是长轮询,都是单向的通信,都完全依赖客户端不断的发送请求。在数据量较大的情况,这将极大的消耗服务器资源。

那有没有比轮询更好的解决方案?

当然有,在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

websocket在实时通信领域运用的比较多,比如社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等需要高实时的场景。

目前GoEasy提供完整的websocket前后端解决方案,简单的几行代码集成,即可快速搭建您的专属websocket服务。

另外GoEasy还支持更多的前端技术框架比如小程序、react、vue、uniapp等。同时还是支持php、java、python等服务端语言。 有websocket使用需求的开发者可以来注册GoEasy账号进行测试使用。【立即注册

同时GoEasy官网提供了很多的websocket实例演示,包括在线聊天、实时协作游戏、弹幕、实时图表、扫码登录等应用场景,大家也可以去看看。


Comments are closed.