码迷,mamicode.com
首页 > Web开发 > 详细

框架基础:ajax设计方案(二)---集成轮询技术

时间:2017-01-12 12:48:42      阅读:35      评论:0      收藏:0      [点我收藏+]

标签:keyword   作用   堆栈   ble   com   信息   讲解   循环   object   

框架基础:ajax设计方案(二)---集成轮询技术

上一篇文章介绍了ajax技术核心方法,和跨域的问题(只要后台支持跨域默认post就可以),这篇文章讲解一下使用ajax实现的轮询技术,至于iframe,SSE服务器单向推送,以及webSocket双工通道暂时不涉及

一些概念:

  短轮询:浏览器通过循环或者setTimeout方法,每隔一段时间往后台发送一次请求,无线循环

  长轮询:不停的向后台请求数据,但是后台如果检测不到数据变动,就会将这个请求挂掉。如果检测到数据变动,就会响应这个请求变动数据

区别概念:

  长连接:在进行http数据传输的时候,在数据传输层一直开着一个TCP通道,所有请求资源文件都是通过复用这个通道去请求数据,有超时时间

  短连接:如果http进行的短连接,即每次浏览器发送请求,都会创建TCP通道,然后传输完成了再进行销毁,重复操作,消耗很大

 

主要区别:

  1. http的长短轮询,通过代码层,向后台请求数据。
  2. Http的长短连接,实际上就是TCP协议传输层是否复用一个TCP协议。

 

主要业务方面:及时性比较高的应用(web端聊天系统),或者需要后台等待响应的应用(比如付款,等待完成响应)。

关键代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
    * 长轮询的实现
    *   a. 业务上只需要得到服务器一次响应的轮询
    *   b. 业务上需要无限次得到服务器响应的轮询
    *
    *   param: url   请求接口地址
    *          data  请求参数
    *          successEvent    成功事件处理
    *          isAll           是否一直请求(例如,等待付款完成业务,只需要请求一次)
    *          timeout         ajax超时时间
    *          timeFrequency   每隔多少时间发送一次请求
    *          error           错误事件
    *          timeout         超时处理
    * */
   longPolling:function(url,data,successEvent,isAll,timeout,timeFrequency,errorEvent,timeoutEvent){