Ajax轮询,Ajax长轮询和websocket简单介绍

1、ajax轮询

ajax轮询 的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。

客户端:你好在吗?

客户端:你好在吗?

客户端:你好在吗?

服务端:在的
2、long poll

(长轮询)其实原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型(一直在呼叫,等不到你,我愿孤独终老,很执着),也就是说,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回或超时,返回完之后,客户端再次建立连接,周而复始,基于事件的触发,一个事件接一个事件。
客户端:你好在吗...........................

服务端:在的

客户端:终于等到你

服务端:东西给你,再见

客户端:你好我又来了...........
Ajax轮询与(长轮询)long poll都属于不断发送http请求,然后等待服务器处理,在这里可以明显的看到http协议一个特点,被动性,服务端不能主动联系客户端,只有客户端发起(服务端:不是我高冷,我也想

主动出击,奈何实力他不允许啊,我也很绝望)。

缺点:Ajax轮询需要服务器有很快的处理速度与快速响应(永动机要诞生了,累死你丫的)。long poll需要很高的并发(高速公路需要有很多的通道口,不然堵车不能怪我),体现在同时容纳请求的能力。

3、webSocket是html5一种新的协议,实现了浏览器与服务器之间的全双工通信,能很好的节省服务器资源与带宽,并在服务器端与浏览器端实现实时通行,他建立在TCP之上, 同http一样,通过tcp来传输数据。
特点:
     1)只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,服务器端会知道连接的信息,知道客户端关闭请求,同时由服务器主动推送,当有信息需要发送时,直接发送。

   2)客户端的连接通过session对象存储,能够实现实时推送,与Ajax沦陷和 long poll 相比有明显的优势(webSocket:不要迷恋哥,哥就是这么优秀)。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

SSE技术详解:一种全新的HTML5服务器推送事件技术

前言一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(ServersentEvents)。关于这4种技术方式的优缺点,请参考《Web端即时通讯技术盘点:短轮询、Comet、Websocket

IM客户端消息推送的几种方式及特点

提起消息推送一般人们会经常提起的有以下几种:1.轮询顾名思义,客户端定期去向服务端询问是否有新的消息,简单点说就是服务端不关心客户端的地址是什么,客户端来询问,直接告诉它就行。这种方案最简单,但是却不适用于即时通讯产品,因为即时通讯软件的消息传递机制与一般的消息推送的区别就在即时这点,如果采用轮询的方式,客户端每几秒就连一次服务器,对于手机电量与