Ajax Push - Overview

compared with
Current by Feras Nasser
on Nov 01, 2012 19:33.


 
Key
These lines were removed. This word was removed.
These lines were added. This word was added.

View page history


There are 1 changes. View first change.

 h1. Definition
  
 Ajax Push allows the application to incrementally update any part of the page at any time, for any group of clients. This is a small change in terms of the technical capabilities of Ajax applications, but it is a revolutionary change in terms of what applications can actually provide to users. Ajax Push is the key to building collaborative multi-user applications for the web.
  
 h1. Under the Hood
  
 The intricacies of the Ajax Push implementation are completely transparent to the ICEfaces developer, as you work with a straightforward set of [APIs|Ajax Push - APIs]. It is, however, useful to understand the basic mechanics. Ajax Push in ICEfaces leverages an asynchronous notification mechanism called [ICEpush|http://www.icepush.org/product/overview.html]. Simply put, ICEpush uses [long polling|http://en.wikipedia.org/wiki/Push_technology#Long_polling] to provide asynchronous notification over standard HTTP, using only standard browser capabilities. The sequence of events involved in Ajax Push is illustrated below.
  
 !ICEfaces-2.0-Ajax-Push.png|align=center!
  
 # Some state change in the application triggers an Ajax Push event.
 # ICEpush notification is delivered to the browser client over a dedicated ICEpush connection.
 # Notification at client browser causes a JSF Ajax request with an empty execute phase.
 # Render phase captures new state of client, and [Direct to DOM Rendering] delivers incremental page updates to client.
  
 The diagram shows a single client recipient of a push, but the mechanism supports named groups of clients that all receive notifications. ICEpush handles all aspects of the asynchronous blocking connections involved, including connection management/sharing, heartbeating, and Asynchronous Request Processing (ARP) integration.
  
  !icefaces-services-wiki.png|align=center!
  [!icefaces-services-wiki.png|align=center!|http://www.icesoft.org/java/services/icefaces-professional-services.jsf]
  
 h1. Programming Model
  
 Ajax Push can be added to an application with just two lines of code.
  
 The _org.icefaces.application.PushRenderer_ pushes page updates to groups of pages. To cause all pages in "someGroup" to be updated with the current server state, call
  
 {code:java}PushRenderer.render("someGroup");
 {code}
 The easiest way to assemble push groups is to push updates to all pages in a user's session using
 {code:java}PushRenderer.addCurrentSession("someGroup");
 {code}
 To distinguish between individual pages in a session, use
  
 {code:java}PushRenderer.addCurrentView("someGroup");
 {code}
 It really is as simple as that to add real-time collaboration to your JSF application. Checkout the [full API|Ajax Push - APIs] for more details.
  
 h1. Deployment
  
 Because of the underlying asynchronous blocking connections used by the ICEpush notifications, there are a couple of deployment considerations for Ajax Push-enabled applications.
  
 h3. Asynchronous Request Processing (ARP)
  
 ICEpush relies on Servlet 3.0 standard ARP APIs. If they are not present in the deployment environment, normal thread blocking connections are used.
  
 h3. Enterprise Push Server
  
 For clustered and high-availability deployments of Ajax Push-enabled applications the [Enterprise Push Server|http://www.icefaces.org/main/ajax-java/enterprise-push-server.iface] (EPS) is required. It manages asynchronous blocking connections across the cluster and performs seamless fail over for mission-critical, high-availability deployments. EPS is available in [ICEfaces Enterprise Edition|http://www.icefaces.org/main/ajax-java/icefaces-ee.iface].

© Copyright 2021 ICEsoft Technologies Canada Corp.