gevent中如何实现长轮询

转载 2016年08月29日 16:00:36
      浏览网页时,浏览器会传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/


python + redis长轮询

前言说起来长轮询也不是什么新鲜概念,不过个人首次用python实现。环境Mac, Python3.5.2, Tornado4.4.2。http协议在介绍长轮询前先了解下http协议。 http:超文...
  • duxiangwushirenfei
  • duxiangwushirenfei
  • 2016年12月18日 21:57
  • 1610

python:waitfor轮询

有时候需要等待一个时间不确定的事件的发生,如果直接通过sle
  • tillfall
  • tillfall
  • 2014年08月09日 06:25
  • 1825

tornado长轮询的理解

1.什么是长轮询 顾名思义,长轮询就是不停循环请求服务器,获取最新信息。 长轮询分为两类: 1)浏览器以固定时间间隔向服务器发送请求 缺点是轮询频率要足够快,但又不能太频繁,否则当成百上千个客...
  • thone00
  • thone00
  • 2017年05月04日 22:29
  • 302

java comet 长轮询的案例

这个案例主要是java的comet 长轮询功能的实现,看到网上的案例只是从后台推送消息到前端,而且很多都是(iframe, 流的方式), 很难找到从客户端发送消息到服务器端,服务器端接收到消息之后推送...
  • xingyakai
  • xingyakai
  • 2016年05月19日 09:54
  • 3874

长轮询 Servlet实现

长轮询@RequestMapping("/ajax") public void ajax(long timed, HttpServletResponse response) throws Except...
  • qq_17612199
  • qq_17612199
  • 2016年10月11日 16:19
  • 929

HTTP长轮询(long polling)实现

一,轮询,长轮询 轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。  优点:后端程序编写比较容易。  缺点:请求中有大半是无用,浪费带宽和服务器资源。 ...
  • huster14wq
  • huster14wq
  • 2015年12月24日 14:29
  • 519

基于HTTP长轮询实现简单推送

应用场景:设备为安卓、PC以及服务器,要求PC端能够单向给移动端发送消息指令,安卓端解析消息,进行后续处理动作。其中安卓端为基于Phonegap开发,说白了,就是HTML+JS。 规模:正常应用为20...
  • wxz295682941
  • wxz295682941
  • 2017年02月12日 11:12
  • 1235

javaWeb与Jquery ajax长轮询简单实现

javaWeb项目中需要一个实时提醒的功能,也就是某人做了某一操作,可以立即提醒到当前在线的用户 最开始想在用户做了操作后,储存一个状态到数据库中然后用每隔几秒用ajax去请求后台查询数据库来确定是否...
  • weiwei5910
  • weiwei5910
  • 2013年05月24日 01:16
  • 8472

gevent开发http服务器与tcp服务器

感觉上gevent相关的东西也都了解的差不多了。。。最后shou'yi'xia
  • fjs_cloud
  • fjs_cloud
  • 2014年09月10日 15:08
  • 2776

长轮询Long Polling的通俗解释

“轮询”是个耐人寻味的词,第一次看到它的时候我就直接理解为“轮流查询”了。但是看到了英文才知道这个是网络通信专业的术语。轮询,其实就是一群人在排队买东西。polling这个词也生动的形容了这个的状态。...
  • mengxianhua
  • mengxianhua
  • 2015年03月20日 18:17
  • 978
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gevent中如何实现长轮询
举报原因:
原因补充:

(最多只允许输入30个字)