public class PollingServerPush extends java.lang.Object implements ServerPush
Developer can control the frequency of the polling by setting the preferences as follows:
PollingServerPush.delay.min
PollingServerPush.delay.max
PollingServerPush.delay.factor
1 x factor
seconds. Default: 5.
The larger the factor is, the longer delay it tends to be.Another way to control the frequency is to instantiate an instance
with PollingServerPush(int, int, int)
, and then assign it
with DesktopCtrl.enableServerPush(ServerPush)
.
desktop.enableServerPush(new PollingServerPush(1000, 5000, -1));
Constructor and Description |
---|
PollingServerPush() |
PollingServerPush(int min,
int max,
int factor) |
Modifier and Type | Method and Description |
---|---|
boolean |
activate(long timeout)
Activate the current thread (which must be a server-push thread).
|
boolean |
deactivate(boolean stop)
Deactivates the current thread (which must be a server-push thread).
|
protected java.lang.String |
getStartScript()
Returns the JavaScript codes to enable (a.k.a., start) the server push.
|
protected java.lang.String |
getStopScript()
Returns the JavaScript codes to disable (a.k.a., stop) the server push.
|
boolean |
isActive()
Returns if the working thread of the server push is active.
|
void |
onPiggyback()
Called when
Events.ON_PIGGYBACK
is received. |
void |
resume()
ZK-1777 resume serverpush after DesktopRecycling
|
<T extends Event> |
schedule(EventListener<T> listener,
T event,
Scheduler<T> scheduler)
Called by the associated desktop to schedule a task to execute
asynchronously.
|
void |
start(Desktop desktop)
Starts and initializes the server-push controller.
|
protected void |
startClientPush()
Sends an AU response to the client to start the server push.
|
void |
stop()
Stops and cleans up the server-push controller.
|
protected void |
stopClientPush()
Sends an AU response the client to stop the server push.
|
public PollingServerPush()
public PollingServerPush(int min, int max, int factor)
min
- the minimal delay before sending the second polling request
(unit: milliseconds).
If negative, the default is used (see PollingServerPush
).max
- the maximal delay before sending the second polling request
(unit: milliseconds).
If negative, the default is used (see PollingServerPush
).factor
- the delay factor.
If negative, the default is used (see PollingServerPush
).protected void startClientPush()
start(org.zkoss.zk.ui.Desktop)
.
The derived class usually overrides this method to support different devices, such as ZK Mobile.
The default implementation is to send AuScript
containing
the script returned by getStartScript()
.
Devices that don't support scripts could override this method
to send a custom AU response (AuResponse
).
protected void stopClientPush()
The derived class usually overrides this method to support different devices, such as ZK Mobile.
The default implementation is to send AuScript
containing
the script returned by getStopScript()
.
Devices that don't support scripts could override this method
to send a custom AU response (AuResponse
).
protected java.lang.String getStartScript()
startClientPush()
to prepare the script
of AuScript
that will be sent to the client.protected java.lang.String getStopScript()
stopClientPush()
to prepare the script
of AuScript
that will be sent to the client.public boolean isActive()
ServerPush
Executions.activate(org.zkoss.zk.ui.Desktop)
and
Executions.deactivate(org.zkoss.zk.ui.Desktop)
.isActive
in interface ServerPush
public void start(Desktop desktop)
ServerPush
ServerPush.start(org.zkoss.zk.ui.Desktop)
is called when Desktop.enableServerPush(boolean)
is called to enable the server-push feature for the specified
desktop.
start
in interface ServerPush
public void resume()
resume
in interface ServerPush
public void stop()
ServerPush
ServerPush.stop()
is called when Desktop.enableServerPush(boolean)
is called to disable the server-push feature, or when the desktop
is being removed.
stop
in interface ServerPush
public void onPiggyback()
ServerPush
Events.ON_PIGGYBACK
is received. The invocation is passive (i.e., triggered by
other events, rather than spontaneous).
This method is called in
the context of an event listener. In other words, the execution
is activated and you can retrieve it by
Executions.getCurrent()
.
onPiggyback
in interface ServerPush
public <T extends Event> void schedule(EventListener<T> listener, T event, Scheduler<T> scheduler)
ServerPush
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.
schedule
in interface ServerPush
listener
- the task to executeevent
- 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.public boolean activate(long timeout) throws java.lang.InterruptedException, DesktopUnavailableException
ServerPush
The invoker of this method must invoke ServerPush.deactivate(boolean)
in this finally clause.
Note: the activation is applied to the desktop that was
assigned by ServerPush.start(org.zkoss.zk.ui.Desktop)
.
Unlike ServerPush.onPiggyback()
,
this method is NOT called in the context of an event listener.
Rather, it is called in the thread of a server-push thread.
activate
in interface ServerPush
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 threadDesktopUnavailableException
- if the desktop is removed
(when activating).public boolean deactivate(boolean stop)
ServerPush
deactivate
in interface ServerPush
stop
- whether to stop after deactivateServerPush.activate(long)
Copyright © 2005-2011 Potix Corporation. All Rights Reserved.