Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "RAP/Server Push"
Line 22: | Line 22: | ||
=== Callback requests === | === Callback requests === | ||
− | + | After processing the response to a ui request, the client sends a new callback request if the uiCallbackActive property is true and there is no current callback request standing. | |
− | + | When a callback request fails, the client sends a new callback request to re-establish the broken callback connection. To avoid unnecessary load on the client, retry requests are sent with a suitable delay. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | In the response to a callback request, the server can advise the client to send a ui request if needed. | ||
Because every ui request must synchronize client and server, this ui request must contain any pending changes on the client. | Because every ui request must synchronize client and server, this ui request must contain any pending changes on the client. | ||
This request does not differ from requests that are sent as a result of a user interaction. | This request does not differ from requests that are sent as a result of a user interaction. | ||
Line 39: | Line 36: | ||
==== Display#wake() ==== | ==== Display#wake() ==== | ||
− | + | Causes a standing callback request to return and trigger a ui request if called outside of a ui request. | |
+ | If this method is called while a ui request is processed, it does nothing. | ||
==== Display#(a)syncExec() ==== | ==== Display#(a)syncExec() ==== | ||
− | + | The runnable that is passed to (a)syncExec() is put in a queue and executed in the next call to Display#readAndDispatch(). | |
− | If a ui request is currently running, the (a)sync runnable | + | |
− | In this case, the callback request is not released | + | Display#(a)syncExec() causes a standing callback request to return and trigger a ui request if called outside of a ui request. |
+ | If a ui request is currently running, the (a)sync runnable is being processed by this ui request. | ||
+ | In this case, the callback request is not released. | ||
==== UICallBack#deactivate() ==== | ==== UICallBack#deactivate() ==== | ||
causes the request to return false if no other instance requires the UICallBack system | causes the request to return false if no other instance requires the UICallBack system |
Revision as of 09:57, 19 July 2011
The UICallback is RAP's mechanism to push UI-changes to the client. It's based on the so-called Comet approach, i.e. it uses a long-standing request that is answered only in case of server-side updates.
Contents
Requests
There are two different types of requests involved:
UI requests
Normal Ajax requests that synchronize client and server.
Callback requests
Long-standing Ajax requests for server notifications to the client.
Activation
The UICallback mechanism is activated and deactivated on the server. When the activation state changes, the property uiCallbackActive is updated in the response of a ui request.
When the property uiCallbackActive is true, the client ensures that there is an active connection to the server.
Callback requests
After processing the response to a ui request, the client sends a new callback request if the uiCallbackActive property is true and there is no current callback request standing.
When a callback request fails, the client sends a new callback request to re-establish the broken callback connection. To avoid unnecessary load on the client, retry requests are sent with a suitable delay.
In the response to a callback request, the server can advise the client to send a ui request if needed. Because every ui request must synchronize client and server, this ui request must contain any pending changes on the client. This request does not differ from requests that are sent as a result of a user interaction.
API Calls that affect the UI Callback
The following actions cause a standing callback request to be responded to.
Display#wake()
Causes a standing callback request to return and trigger a ui request if called outside of a ui request. If this method is called while a ui request is processed, it does nothing.
Display#(a)syncExec()
The runnable that is passed to (a)syncExec() is put in a queue and executed in the next call to Display#readAndDispatch().
Display#(a)syncExec() causes a standing callback request to return and trigger a ui request if called outside of a ui request. If a ui request is currently running, the (a)sync runnable is being processed by this ui request. In this case, the callback request is not released.
UICallBack#deactivate()
causes the request to return false if no other instance requires the UICallBack system