org.zkoss.zkex.ui.comet
Class CometServerPush

java.lang.Object
  extended by org.zkoss.zkex.ui.comet.CometServerPush
All Implemented Interfaces:
org.zkoss.zk.ui.sys.ServerPush

public class CometServerPush
extends Object
implements org.zkoss.zk.ui.sys.ServerPush

A server-push implementation that is based on comet. This implementation is compatible with any version of Servlet. It also means it doesn't utilize Servlet 3 asynchronous processing support. If you are using Servlet 3 servers, it is recommended to use org.zkoss.zkmax.ui.comet.CometServerPush instead.

Available in ZK PE.

Since:
6.0.0
Author:
tomyeh

Nested Class Summary
static interface CometServerPush.AsyncInfo
          The interface for implementing asynchronous processing.
 
Constructor Summary
CometServerPush()
           
 
Method Summary
 boolean activate(long timeout)
           
 boolean deactivate(boolean stop)
           
 org.zkoss.zk.ui.Desktop getDesktop()
          Returns the desktop that this server push belongs to (never null).
protected  String getStartScript()
          Returns the JavaScript codes to enable (aka., start) the server push.
protected  String getStopScript()
          Returns the JavaScript codes to disable (aka., stop) the server push.
 boolean isActive()
           
 void onPiggyback()
           
protected  void onStart()
          Called when start(org.zkoss.zk.ui.Desktop) is called.
protected  void onStop()
          Called when stop() is called.
protected  void processRequest(org.zkoss.zk.ui.Execution exec, CometServerPush.AsyncInfo ai)
          Called when receiving the comet request from the client.
<T extends org.zkoss.zk.ui.event.Event>
void
schedule(org.zkoss.zk.ui.event.EventListener<T> listener, T event, org.zkoss.zk.ui.sys.Scheduler<T> scheduler)
           
protected  boolean setBusy()
          Sets busy and return if it is busy for processing other request.
 void start(org.zkoss.zk.ui.Desktop desktop)
          Starts the server push.
protected  void startClientPush()
          Sends an AU response to the client to start the server push.
 void stop()
          Stops the server push.
protected  void stopClientPush()
          Sends an AU response the client to stop the server push.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CometServerPush

public CometServerPush()
Method Detail

startClientPush

protected void startClientPush()
Sends an AU response to the client to start the server push. It is called by start(org.zkoss.zk.ui.Desktop).

The derived class usually overrides this method to support different devices.

The default implementation is to send an AuScript response to contain the script specified in a preference called CometServerPush.start, or the script returned by getStartScript(), if the preference is not found. Devices that don't support scripts could override this method to send a custom AU response (AuResponse).


stopClientPush

protected void stopClientPush()
Sends an AU response the client to stop the server push.

The derived class usually overrides this method to support different devices, such as ZK Mobile.

The default implementation is to send an AuScript instance to contain the script specified in a preference called CometServerPush.stop,' or the script returned by getStopScript(), if the preference is not found. Devices that don't support scripts could override this method to send a custom AU response (AuResponse).


getStartScript

protected String getStartScript()
Returns the JavaScript codes to enable (aka., start) the server push. It is called by startClientPush() to prepare the script of AuScript that will be sent to the client.


getStopScript

protected String getStopScript()
Returns the JavaScript codes to disable (aka., stop) the server push. It is called by stopClientPush() to prepare the script of AuScript that will be sent to the client.


getDesktop

public org.zkoss.zk.ui.Desktop getDesktop()
Returns the desktop that this server push belongs to (never null).


isActive

public boolean isActive()
Specified by:
isActive in interface org.zkoss.zk.ui.sys.ServerPush

start

public void start(org.zkoss.zk.ui.Desktop desktop)
Starts the server push.

The derived class rarely need to override this method. Rather, override startClientPush().

Specified by:
start in interface org.zkoss.zk.ui.sys.ServerPush

stop

public void stop()
Stops the server push.

The derived class rarely need to override this method. Rather, override stopClientPush().

Specified by:
stop in interface org.zkoss.zk.ui.sys.ServerPush

onStart

protected void onStart()
Called when start(org.zkoss.zk.ui.Desktop) is called. This method is called before startClientPush(), and used to initialize the desktop, if necessary.

The default implementation initializes an extension to process the comet request.


onStop

protected void onStop()
Called when stop() is called. This method is called after stopClientPush() is called and this server push has been cleaned up.

The default implementaiton does nothing.


onPiggyback

public void onPiggyback()
Specified by:
onPiggyback in interface org.zkoss.zk.ui.sys.ServerPush

schedule

public <T extends org.zkoss.zk.ui.event.Event> void schedule(org.zkoss.zk.ui.event.EventListener<T> listener,
                                                             T event,
                                                             org.zkoss.zk.ui.sys.Scheduler<T> scheduler)
Specified by:
schedule in interface org.zkoss.zk.ui.sys.ServerPush

setBusy

protected boolean setBusy()
Sets busy and return if it is busy for processing other request. If it is busy, true is returned. If it is not busy, false is returned but it is marked as busy.

It is possible since the client might abort the previous one and issue a new one but ther server didn't know.


processRequest

protected void processRequest(org.zkoss.zk.ui.Execution exec,
                              CometServerPush.AsyncInfo ai)
                       throws IOException
Called when receiving the comet request from the client.

Throws:
IOException

activate

public boolean activate(long timeout)
                 throws InterruptedException,
                        org.zkoss.zk.ui.DesktopUnavailableException
Specified by:
activate in interface org.zkoss.zk.ui.sys.ServerPush
Throws:
InterruptedException
org.zkoss.zk.ui.DesktopUnavailableException

deactivate

public boolean deactivate(boolean stop)
Specified by:
deactivate in interface org.zkoss.zk.ui.sys.ServerPush


Copyright © 2012. All Rights Reserved.