WEB开发网
开发学院网页设计JavaScript Comet:基于 HTTP 长连接的“服务器推”技术 阅读

Comet:基于 HTTP 长连接的“服务器推”技术

 2009-10-11 00:00:00 来源:WEB开发网   
核心提示: 如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,Comet:基于 HTTP 长连接的“服务器推”技术(8),会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源,客户端与服务器端通信信息格式 pushlet 定义了一套客

如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

当服务器处理信息出现异常情况,需要发送错误信息通知客户端,同时释放资源、关闭连接。

Pushlet - 开源 Comet 框架

Pushlet 是一个开源的 Comet 框架,在设计上有很多值得借鉴的地方,对于开发轻量级的 Comet 应用很有参考价值。

观察者模型

Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。

客户端 JavaScript 库

pushlet 提供了基于 AJAX 的 JavaScript 库文件用于实现长轮询方式的“服务器推”;还提供了基于 iframe 的 JavaScript 库文件用于实现流方式的“服务器推”。

JavaScript 库做了很多封装工作:

定义客户端的通信状态:STATE_ERROR、STATE_ABORT、STATE_NULL、STATE_READY、STATE_JOINED、STATE_LISTENING;

保存服务器分配的会话 ID,在建立连接之后的每次请求中会附上会话 ID 表明身份;

提供了 join()、leave()、subscribe()、 unsubsribe()、listen() 等 API 供页面调用;

提供了处理响应的 JavaScript 函数接口 onData()、onEvent()…

网页可以很方便地使用这两个 JavaScript 库文件封装的 API 与服务器进行通信。

客户端与服务器端通信信息格式

pushlet 定义了一套客户与服务器通信的信息格式,使用 XML 格式。定义了客户端发送请求的类型:join、leave、subscribe、unsubscribe、listen、refresh;以及响应的事件类型:data、join_ack、listen_ack、refresh、heartbeat、error、abort、subscribe_ack、unsubscribe_ack。

上一页  3 4 5 6 7 8 9  下一页

Tags:Comet 基于 HTTP

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