Class CometServerPush

java.lang.Object
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 CometServerPush instead.

Available in ZK PE.

Since:
6.0.0
Author:
tomyeh
  • Constructor Details

    • CometServerPush

      public CometServerPush()
  • Method Details

    • 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 (a.k.a., start) the server push. It is called by startClientPush() to prepare the script of AuScript that will be sent to the client.
    • getStartScript

      protected String getStartScript(String zkediton)
    • getIntPref

      protected int getIntPref(String key)
      Retrieve the integer preference by the given key. Visibility set to protected so that zkmax can have access to this method.
    • getStopScript

      protected String getStopScript()
      Returns the JavaScript codes to disable (a.k.a., 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
    • resume

      public void resume()
      ZK-1777 resume serverpush after DesktopRecycling
      Specified by:
      resume 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 implementation 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 their 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
    • beforeUpdate

      protected void beforeUpdate(CometServerPush.ThreadInfo info)
    • deactivate

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