轮询是一种CPU决策如何提供周边设备服务的方式,又称“程控输入输出”(Programmed I/O)。是由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。
轮询与长轮询
轮询:简单来讲就是客户端定时去请求服务端,是客户端主动请求来促使数据更新。
长轮询:简单来讲就是客户端请求服务端,但是服务端并不是即时返回,而是当有内容更新的时候才返回内容给客户端,从流程上讲,可以理解为服务器向客户端推送内容;
两者之间的区别
轮询:
1、大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候 并没有新的数据更新,因此绝大部分请求都是无效请求
2、数据不一定是实时更新,要看设定的请求间隔,基本会有延迟。
长轮询:
1、解决了轮询的两个大问题,数据实时更新;
2、唯一的缺点是服务器在挂起的时候比较耗内存。
轮询机制是用来解决服务器压力过大的问题的。如果保持多个长连接,服务器压力会过大,因此。专门建立一个轮询请求的接口,里面只保留一个任务id,只需要发送任务id,就可以获取当前任务的情况。如果返回了结果,轮询结束,没有返回则等待一会儿,继续发送请求。
轮询不应该直接暴露出来,应该写在接口里面。比如说。请求一个列表,列表接口里面再调用轮询接口。 列表接口发送请求,返回任务id,2秒后,根据任务id发送轮询接口请求,返回结果为无。。继续等待,4秒后,继续发送轮序请求,请求若返回结果,上抛到列表接口结果,列表接口结果继续上抛,请求结束 。
1.命令请求—–服务器响应已收到请求—-返回任务id
2.更新任务id,发起轮询请求—1轮 – 2秒—–返回结果非任务id情况结束请求—-或者服务器唯一标识
3.更新任务id,发起轮询请求 —2轮 – 4秒 —–返回结果非任务id情况结束请求—-或者服务器唯一标识
4.更新任务id,发起轮询请求 —3轮 —6秒—–返回结果非任务id情况结束请求—-或者服务器唯一标识
5.更新任务id,发起轮询请求 —3轮 —8秒 —–返回结果非非任务id情况结束请求—-或者服务器唯一标识
6,结束任务——————过滤掉之后返回的任何结果。。都认为是失败
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)