服务器推技术 Server Push

技术实现:

一、客户端安装Flash,使用Flash XMLSocket;

二、基于Java Applet套接口(不足:无法通过JS更新HTML内容);

三、基于HTTP长连接的,无需客户端安装插件的技术Comet(彗星):

实现模型:

(1)基于 AJAX 的长轮询(long-polling)方式

实现步骤:1)服务器端会阻塞请求直到有数据传递或超时才返回。

2)客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。

3)当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。

(2)基于 Iframe 及 htmlfile 的流(streaming)方式

实现步骤:iframe 是很早就存在的一种 HTML 标记, 通过在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。

Comet的优缺点:

优点:实时性好(消息延时小);性能好(能支持大量用户)

缺点:长期占用连接,丧失了无状态高并发的特点

Comet的应用:

comet的应用主要体现在股票系统、实时通讯。目前一些主流网站都有类似的原理,例如: webQQ、开心网、校内等等,它们中消息动态都是采用类似的技术,只是具体实现方式不一样。

实现框架:

(1)JAVA领域的DWR框架

(2)JAVA领域的Pushlet框架

四、WebSocket协议

实现双工通信,解决HTTP协议双工通信低效能问题。WebSocket 协议在2008年诞生,2011年成为国际标准,HTML5新增特性 之一,所有浏览器都已经支持了。

特点包括:

(1)建立在 TCP 协议之上,服务器端的实现比较容易。
(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
(3)数据格式比较轻量,性能开销小,通信高效。
(4)可以发送文本,也可以发送二进制数据。
(5)没有同源限制,客户端可以与任意服务器通信。

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

重点:

(1)Websocket是一个全新的协议,不同于HTTP,但是又可以说是基于HTTP协议的,或者说借用了HTTP的协议来完成握手  阶段,并且只需要一次握手。

(2)HTTP协议头增加:Upgrade: websocket;Connection: Upgrade;以实现从HTTP升级为WebSocket。

实现:

(1)客户端有对应API实现;

(2)服务器端:没有统一的标准API,tomcat api, jetty api,spring WebSocket等都有自身的一套实现;


..... Yeager 待续 ....

你可能感兴趣的:(技术调研,HTTP)