首页 > 其他 > 详细

gevent中如何实现长轮询

时间:2016-08-29 17:43:19      阅读:240      评论:1      收藏:0      [点我收藏+]

      浏览网页时,浏览器会传HTTP 请求到服务器,服务器会根据请求将网页的内容传给浏览器,但是在很多的情况下,使用者会需要看到最新的即时性资讯,例如观看股票市场行情,而在以前只能靠着重新载入网页才能获得最新信息,但是这样不但很浪费时间,也会佔用很多不必要的网络资源,并不是一个好的方式,长轮询就是解决这个问题的一个办法。

 

什么是长轮询?

 

1.长时间轮询(long-polling)是让服务器在接收到浏览器发出的HTTP 请求后,服务器会等待一段时间,若在这段时间里面伺服器有新的数据更新,它就会把最新的数据传给浏览器,如果等待的时间到了之后也没有新资料的话,就会送一个回应给浏览器,告知浏览器资料没有更新;

2.长时间轮询可以减少产生轮询(polling)造成网路频宽浪费的状况。


浏览器如何长轮询?


浏览器向服务器发送Ajax请求,当接收到服务器响应后,需要向服务求发送新的请求。


服务器如何处理长轮询?


1.服务器端要能够一直保持住客户端的请求,直到有响应消息;同时服务器对请求的处理要支持非阻塞模式;

2.需要使用Event,python内置Event是阻塞的,gevent的却是非阻塞的。


设计场景


1.浏览器请求获取当前的字符信息,并显示;

2.服务器后天接受某个请求以产生随机字符并存储下来,同时推送给浏览器。


涉及问题


1.服务器需知道浏览器获取信息的标识来推送最新的信息;

2.当浏览器请求更新信息时,服务器可通过Event来保留当前信息,当有新信息来的时候,重设Event来唤醒之前的处理。

 

     以上就是gevent长轮询实现的相关介绍,希望本文的分享对大家有所帮助。

 

文章来源:麦子学院

原文链接:http://www.maiziedu.com/wiki/frame/polling/

 

gevent中如何实现长轮询

原文:http://www.cnblogs.com/space007/p/5818482.html

(0)
(0)
   
举报
评论 一句话评论(1
2016-09-06 16:16:10
GoEasy web 推送基于websocket 和polling两种实现,兼容IE6-IE11的所有IE浏览器以及其它主流浏览器,而且代码简单到只需几行代码, 推送速度快且稳定。个人觉得很不错,嫌socket.io复杂的程序员可以参考一下。官网:goeasy.io
回复
 (6)
 (0)
1条  
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!