`

ajax push

    博客分类:
  • ajax
阅读更多

很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求.

 

基于客户端套接口的 服务器推 技术

1.Flash XMLSocket

    这种方案实现的基础是:

        Flash 提供了 XMLSocket 类。

        JavaScript Flash 的紧密结合:在 JavaScript 可以直接调用 Flash 程序提供的接口。

 

2.Java Applet 套接口

    在客户端使用 Java Applet,通过 java.net.Socket java.net.DatagramSocket    java.net.MulticastSocket 建立与服务器端的套接口连接,从而实现服务器推

 

基于 HTTP 长连接的 服务器推 技术

 

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

 

 

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

Comet

Comet的客户端有基于 javascript cometd-dojox,基于 java cometd-jetty,基于 flex flexcomet

Server端有基于 java comtd-java ibm Feature Pack for Web 2.0

 

Comet的主要逻辑如下:

用基于 http的长连接来进行消息通信。客户端先向服务器端发送一个 httprequest,服务器端接收到后,阻塞在那边,等服务器有消息的时候,则返回一个 httpresponse给客户端,客户端收到后,断开连接,紧接着再发第二个 httprequeest,以此反复进行,保持这个“长连接”。期间,如果连接超时,那么会断开重连,以保持连接。

 

Bayeux协议

Bayeux协议是基于 Json格式的, client server直接的发布订阅消息协议。这个协议基于 http,允许在普通 http情况下,参与者之间的异步消息。

一般情况下,在 http协议中, client要想获得 server的消息,必须先自己发送一个 request,然后 server才会给予 response。而 Bayeux协议改变了这个情况,他允许 server端异步 push自己的消息到 client端。从而实现了 client server之间的双向操作模式( bi-directional communications)。

 

主要逻辑如下:

Client server直接先通过握手协议,互相发送 request response进行握手;如果握手成功,那么 client再向 server发送 connect request server接着发送 connect response,如果这步也成功,那么 client server之间的 Bayeux协议连接成功。否则,要返回开始重新进行握手协议。

 

BC ----------------------------------------- BS

 | ------------------ handshake request ---> |

 | <-- unsuccessful handshake response ----- |

 | ------------------ handshake request ---> |

 | <-- successful handshake response ------- |

 | -------------------- connect request ---> |

 ~                                           ~ wait

 | <------ connect response ---------------- |

 | -------------------- connect request ---> |

 | <---- unsucessful connect response ------ |

 | ------------------ handshake request ---> |

 | <-- successful handshake response ------- |

 | -------------------- connect request ---> |

 ~                                           ~ wait

 | <------ connect response ---------------- |

 

Ajax Push Engine

 

Ajax Push Engine是一个全功能的开源Ajax Push框架。Ajax Push Engine包含一个comet服务器和一组JavaScript框架,二者结合起来可以打造出一个完整的基于Ajax的comet解决方案。Ajax Push Engine可以再不安装任何客户端程序的前提下实时与浏览器进行数据交互。随着web2.0时代的买进,ajax应用逐渐深入人心,笔者首次接触到 comet应用应该是在Java 下著名的Servlet 容 器Jetty6.1.1x的版中,该版本自带了一个comet的demo,是一个无刷新的聊天室应用。Ajax Push Engine曾经被命名为Ajax Chat Engine始与2006年,后来开发者决定创造出一个更优秀的基于Ajax Push 技术的版本,于是Ajax Push Engine诞生了。

Ajax Push Engine 拥有如下四大特点:

  1. Ajax Push Engine采用标准的xmlhttp技术,无需客户端安装任何插件
  2. Ajax Push Engine不依赖浏览器,不受平台限制,Ajax Push Engine的数据传递直接与浏览器交互
  3. Ajax Push Engine采用的是push技术,该技术可以与浏览器实时交互数据
  4. Ajax Push Engine是100%开放源码的框架,并且绝对免费,无论是商业使用还是非商业使用都没任何限制(Ajax Push Engine采用GNU Public Licence version 2发布)

Ajax Push Engine下载 地址:

http://nocache.ape-project.org/files.php?f=APE-Project_1.0.tar.gz&v=1.0

Ajax Push Engine下载 (pdf文档,适合入门学习)

http://www.ape-project.org/var/comics_pdf/APE-Comics_Chapter1.pdf

Ajax Push Engine在线文档:

http://www.ape-project.org/docs/

http://www.ape-project.org/comics/1/Chapter-I-common-let-s-push.html

Ajax Push Engine官方主页:

http://www.ape-project.org

 

CometD

 

CometD 是一个提供多种开发语言的Bayeux项目,可支 持JavaScript, Java, Perl, Python等语言,由Dojo基金会提供支持。CometD 是一个使用了 Ajax push技术的可伸缩的基于HTTP的事件路由总线程序,这项技术也叫 Comet。

 

近日,CometD发布了1.0 最终版本,而且对2.0版本的开发也在展开。

 

  • better support for tweaking the configuration
  • split configuration and initialization steps to allow more flexibility in case of programmatic disconnects
  • extended and clarified the Cometd APIs
  • better notifications for failures due to server or network failures
  • automatic and configurable connection retries
  • incoming message and outgoing message interception
  • automatic bayeux transport negotiation, supporting long-polling and callback-polling transports
  • extensions such as timesync, message acknowledgement and transparent page reload

PUSHLET

http://www.iteye.com/topic/89158

http://www.javaworld.com/jw-03-2000/jw-03-pushlet.html

http://www.pushlets.com/

 

 

分享到:
评论

相关推荐

    APE(Ajax Push Engine)示例

    **APE(Ajax Push Engine)详解** Ajax Push Engine(简称APE)是一种实时Web通信技术,它允许服务器主动向客户端推送数据,而无需客户端不断发起请求。这与传统的HTTP长轮询或者短轮询不同,它利用了WebSocket协议,...

    ajax pushserver

    【标题】"Ajax PushServer" 是一个基于C#开发的实时数据推送服务示例,它利用Ajax技术实现Web端的即时通信。在传统的HTTP协议中,客户端与服务器之间的交互是基于请求-响应模型的,而Ajax Push(也称为Comet技术)...

    pushstate:用于 WordPress 的 AJAX PushState 插件

    "pushstate:用于 WordPress 的 AJAX PushState 插件" 指的是一种将 AJAX(异步JavaScript和XML)与 HTML5 的 History API(PushState 方法)结合使用的插件,专为 WordPress 设计。PushState 是 HTML5 History API ...

    ajaxpush服务器推

    **Ajax Push技术详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。Ajax Push,也称为Comet技术,是Ajax应用的一种特殊形式,它允许服务器主动向客户端推...

    ajax4jsf 例子

    - **Ajax Push**:a4j提供了基于Long Polling和Comet的推送技术,让服务器能主动向客户端发送数据。 ### 7. 结论 Ajax4JSF通过简化JSF应用中的Ajax集成,使开发者能够创建更动态、更响应式的Web界面,提升了用户...

    pjax (ajax + pushState的封装) 无刷新翻页等

    pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术。 同时支持了缓存和本地存储,下次访问的时候直接读取本地数据,无需在次访问。 并且展现方式支持动画技术,可以使用系统自带的动画方式,也...

    AJAX DWR基本使用向导

    DWR还支持批量调用、事件监听、安全性控制以及更多高级特性,如Closures(JavaScript中的匿名函数)和Ajax Push。在实际项目中,你可能需要根据需求调整DWR的配置,比如设置安全策略以防止跨站脚本攻击(XSS)和跨站...

    ajax与HTML5 history pushState:replaceState实例1

    * pjax技术:基于ajax+history.pushState的新技术,可以无刷新改变页面的内容,并且可以改变页面的URL。 五、浏览器兼容性 | Feature | Chrome | Firefox(Gecko) | Internet Explorer | Opera | Safari | | --- | ...

    ICEfaces 1.8 .pdf

    它引入了Ajax Push技术,极大地提升了用户体验,允许实时的数据更新,使得Web应用更接近桌面应用的交互性。ICEfaces不仅仅是一个UI组件库,它还提供了一个完整的解决方案,包括Facelets视图层技术、Spring框架集成...

    Practical RichFaces

    3. Ajax Push:实现了服务器端到客户端的数据推送,使得实时更新成为可能,例如聊天室或股票报价应用。 4. Extensions:包括一系列增强JSF功能的组件,如数据表的分页和排序、文件上传等。 四、RichFaces的事件模型...

    DWR2.0中文文档

    - **AJAX Push**:支持服务器向客户端推送数据,实现真正的双向通信。 3. **DWR的核心组件** - **Ajax Engine**:负责处理Ajax请求和响应,将JavaScript与Java之间的通信转化为HTTP请求。 - **Reverse Ajax**:...

    Ajax-push-state.zip

    Ajax-push-state.zip,将静态网站转换为动态web应用程序。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的...

    监视用户的登入登出和页面推送技术

    在DWR3.0中,增加了许多新特性,如自动重试、更好的错误处理、改进的性能以及对AJAX Push的支持。 在"监视用户登录"这一场景中,我们通常需要在用户成功登录时记录登录事件,并在用户登出时清除相关会话信息。这...

    一个完整的用ajax反转 server push(服务器主动向页面推送数据)技术实现的web聊天室源码

    在Web开发中,服务器主动向客户端推送数据的技术被称为Server Push,它是实时Web应用程序的重要组成部分,尤其是在构建聊天室、实时通知系统或在线游戏等场景中。本项目是一个利用Ajax反向推送(Comet技术)实现的...

    pjax (ajax + pushState的封装) 无刷新翻页等.zip

    **Pjax:Ajax与PushState的融合技术** Pjax(Page JavaScript XHR)是一种前端技术,主要用于实现网页的无刷新翻页效果。它结合了Ajax(异步JavaScript和XML)和HTML5的History API(尤其是PushState方法),旨在...

    基于ajax相册系统

    可以通过将Ajax内容预先渲染在服务器端,或者使用History API和PushState来模拟页面跳转,改善SEO。 ### 9. 错误处理 在Ajax应用中,错误处理同样重要。可以设置XMLHttpRequest对象的onerror和ontimeout事件,以便...

    基于 AJAX和Webservice 的长轮询方式ServerPush技术模拟

    **基于 AJAX 和 Webservice 的长轮询方式 ServerPush 技术模拟** 在现代网页应用中,实时性成为了不可或缺的需求,例如股票更新、聊天室、在线游戏等场景。传统的 HTTP 协议是基于请求-响应模式的,即客户端发起...

    javaeye月刊2008年4月 总第2期.pdf

    ICEFaces是一个JavaServer Faces (JSF)组件库,其1.7版本提供了对AJAX Push的支持,允许实时双向通信,增强了用户体验。 10. **怎样选择Java测试框架** 文章可能探讨了如何根据项目需求选择合适的Java测试框架,...

Global site tag (gtag.js) - Google Analytics