服务器推技术--基于http长连接

1.浏览器作为 Web 应用的前台,自身的处理功能比较有限。浏览器的发展需要客户端升级软件,同时由于客户端浏览器软件的多样性,在某种意义上,也影响了浏览器新技术的推广。 在 Web 应用中,浏览器的主要工作是发送请求、解析服务器返回的信息以不同的风格显示。AJAX 是浏览器技术发展的成果,通过在浏览器端发送异步请求,提高了单用户操作的响应性。但 Web 本质上是一个多用户的系统,对任何用户来说,可以认为服务器是另外一个用户。现有 AJAX 技术的发展并不能解决在一个多用户的 Web 应用中,将更新的信息实时传送给客户端,从而用户可能在“过时”的信息下进行操作。而 AJAX 的应用又使后台数据更新更加频繁成为可能。

2.传统的 Web 应用模型与基于 AJAX 的模型之比较

3.基于 HTTP 长连接、无须在浏览器端安装插件的“服务器推”技术为“Comet”

下面介绍两种comet应用的两种实现方式

a.基于ajax的长轮询方式

它与传统ajax应用模型的区别在于:服务端会阻塞请求直到有数据需要传递或超时才会返回。

                客户端javascript处理函数会在接收,处理服务端发送的数据后,再次发送请求,重新连接。

                当客户端在接收处理服务端发送的数据时,服务端可能有最新的数据到达;这些信息会被服务端保存,直到客户端

              重新建立连接,客户端会一次把当前服务端所有数据一次取回。

在这种长轮询方式下,客户端是在 XMLHttpRequest 的 readystate 为 4(即数据传输结束)时调用回调函数,进行信息处理。当 readystate 为 4 时,数据传输结束,连接已经关闭。当readystate 为 3 时(数据仍在传输中),客户端可以读取数据,从而无须关闭连接,就能读取处理服务器端返回的信息。(IE 在 readystate 为 3 时,不能读取服务器返回的数据,目前 IE 不支持基于 Streaming AJAX)

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

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

使用 iframe 请求一个长连接有一个很明显的不足之处:IE、Morzilla Firefox 下端的进度栏都会显示加载没有完成,而且 IE 上方的图标会不停的转动,表示加载正在进行

...未完待续

 

 

 

posted @ 2012-07-09 09:55  bigbong2505  阅读(372)  评论(0编辑  收藏  举报