WEB开发网
开发学院软件开发Java Comet 的诱惑 阅读

Comet 的诱惑

 2009-09-28 00:00:00 来源:WEB开发网   
核心提示:它是翱翔天空的小鸟,它是划过长空的飞机……Comet 是一个用于描述客户端和服务器之间的交互的术语,Comet 的诱惑,即使用长期保持的 HTTP 连接来在连接保持畅通的情况下支持客户端和服务器间的事件驱动的通信,自从 Alex Russell 在 Comet: Low Latency Da

它是翱翔天空的小鸟,它是划过长空的飞机……

Comet 是一个用于描述客户端和服务器之间的交互的术语,即使用长期保持的 HTTP 连接来在连接保持畅通的情况下支持客户端和服务器间的事件驱动的通信。自从 Alex Russell 在 Comet: Low Latency Data for the Browse中定义了此术语后,Comet 就成为了一个频繁出现的 Web 2.0 词汇。Comet 样式的应用程序将连接超时值设置为最大,并充分利用基础设施来提供比其他解决方案更快的浏览器更新速度,而且数据传输量更少——这听起来非常不错。但 Comet 样式连接也有缺点,在考虑使用之前您应该对这些缺点加以了解。

所解决的问题(以及带来的问题)

Web 2.0 领域的很多开发人员都需要处理的最为常见的问题是在服务器上为客户端生成的流化事件。解决此问题有三种常见的方式:

轮询

在此方法中,在浏览器中运行的 Javascript™ 按配置的间隔发送请求来检查是否有其应该接收的事件。服务器的响应会立即发回:已经发生的事件,或者告知没有相应的事件。如果客户端发送请求的间隔太短,则可能会带来很大的性能影响。如果间隔太长,事件通知可能晚于客户端的期望时间到达。

图 1. 轮询

图 1. 轮询

Comet 长轮询或混合轮询

使用混合轮询的应用程序同时具备了 Comet 样式应用程序的一些优点和轮询样式的应用程序的一些优点。客户端的浏览器中的 Javascript 发起对后端服务器的初始数据请求。服务器几乎会立即响应,但会让套接字保持开放状态,以便完成响应写入(如果在其开放期间出现了响应)。例如,服务器可能会将套接字保持开放 30 秒钟,如果在此时间段内出现了事件,会立即将其反馈给客户端。但如果在此时间段内没有事件,或者客户端需要向服务器发送更多的数据,连接将关闭,客户端将在一段时间后重新打开另一个连接。有些实现打开读取通道作为长期 HTTP GET,而另外打开写入通道作为 HTTP POST,在需要时打开和关闭。Javascript 中的 XMLHttpRequest 经常采用这种方式实现。

1 2 3 4  下一页

Tags:Comet 诱惑

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接