public interface ServerPush
There are several to implement (or, to simulate) the server-push feature on a HTTP-based application.
First, the server-push feature can be simulated by client's polling.
That is, the client polls the server for executing any pending
The client can adjust the frequency based on the response time
(in proportion to the server load) (see
PollingServerPush for details).
To poll, the client usually send the dummy command that does nothing
onPiggyback() to be execute.
Second, the server-push feature can be implemented by maintaining a persistent connection between client and server. It is also called Comet (see also Comet).
Third, the server-push feature can be simulated in a passive way.
That is, it doesn't poll at all. Rather
onPiggyback() is called
automatically when the user trigger some other events.
|Modifier and Type||Method and Description|
Activate the current thread (which must be a server-push thread).
Deactivates the current thread (which must be a server-push thread).
Returns if the working thread of the server push is active.
Resumes server-push - this is required after desktop recycling.
Called by the associated desktop to schedule a task to execute asynchronously.
Starts and initializes the server-push controller.
Stops and cleans up the server-push controller.
void start(Desktop desktop)
resume() is called when
UiEngine.recycleDesktop(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.Page, java.io.Writer)
is called to resume a previously enabled server-push on the recycled
<T extends Event> void schedule(EventListener<T> task, T event, Scheduler<T> scheduler)
The implementation usually delegates the scheduling to the scheduler passed as the third argument, which is controlled by the desktop. Of course, it could schedule it by itself.
task- the task to execute
event- the event to be passed to the task (i.e., the event listener). It could null or any instance as long as the task recognizes it.
scheduler- the default scheduler to schedule the task. The implementation usually delegates the scheduling back to it. If you prefer to handle it by yourself, you could ignore it.
boolean activate(long timeout) throws java.lang.InterruptedException, DesktopUnavailableException
The invoker of this method must invoke
in this finally clause.
Note: the activation is applied to the desktop that was
this method is NOT called in the context of an event listener.
Rather, it is called in the thread of a server-push thread.
timeout- the maximum time to wait in milliseconds. Ignored (i.e., never timeout) if non-positive.
java.lang.InterruptedException- if it is interrupted by other thread
DesktopUnavailableException- if the desktop is removed (when activating).
boolean deactivate(boolean stop)
stop- whether to stop after deactivate
Copyright © 2005-2011 Potix Corporation. All Rights Reserved.