Trace:
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
jvx:communication:push_publish [2019/03/14 13:09] admin |
jvx:communication:push_publish [2020/06/08 16:01] cduncan |
||
---|---|---|---|
Line 1: | Line 1: | ||
~~NOTRANS~~ | ~~NOTRANS~~ | ||
- | ~~Title: Publish/Push messages~~ | + | ~~Title: Publish/Push Messages~~ |
A standard JVx application requests data from the server side via [[jvx:communication:connections|Connection]]. This concept doesn't support sending messages from the server to the client side. | A standard JVx application requests data from the server side via [[jvx:communication:connections|Connection]]. This concept doesn't support sending messages from the server to the client side. | ||
- | In JVx we have a keep alive mechanism and this usually checks, every 30 seconds, if the connection to the server-side is still valid. This alive check can be used to send properties to the client, using [[jvx:communication:client_server_properties|connection properties]]. It's also known as server-side polling mechanism. But this mechanism isn't the best approach for sending any kind of information to the client-side. | + | In JVx, we have a keep alive mechanism and this usually checks every 30 seconds if the connection to the server-side is still valid. This alive check can be used to send properties to the client using [[jvx:communication:client_server_properties|connection properties]]. It's also known as server-side polling mechanism. But this mechanism isn't the best approach for sending any kind of information to the client-side. |
- | To solve this problem, we introduced the Callback Broker on server-side. This broker is available for any session via [[jvx:server:lco:sessioncontext|SessionContext]]. It makes it possible to send any object to the client-side. The client-side is able to listen to so called call-back calls and e.g. change the UI or trigger data updates. | + | To solve this problem, we introduced the Callback Broker on server-side. This broker is available for any session via [[jvx:server:lco:sessioncontext|SessionContext]]. It makes it possible to send any object to the client-side. The client-side is able to listen to so called call-back calls and, e.g., change the UI or trigger data updates. |
- | A call-back call is not the same as an [[jvx:communication:async_callback|async call]]. The difference is that an async call will be triggered from the client-side and starts a new Thread on server-side, for the execution. A call-back call is triggered from the server-side and sends information to the client-side. | + | A call-back call is not the same as an [[jvx:communication:async_callback|async call]]. The difference is that an async call will be triggered from the client-side and starts a new thread on server-side for the execution. A call-back call is triggered from the server-side and sends information to the client-side. |
- | If you publish a message, it's not guaranteed that the message will be pushed immediately to the client-side. This is technology dependent, e.g. it will work immediately with [[vaadin:home|Vaadin UI]] because websockets are supported. If the technology doesn't support push, the pull mechanism via alive check will be used. So it's guaranteed that the client-side receives the message as soon as possible. | + | If you publish a message, it's not guaranteed that the message will be pushed immediately to the client-side. This is technology dependent, e.g., it will work immediately with [[vaadin:home|Vaadin UI]] because websockets are supported. If the technology doesn't support push, the pull mechanism via alive check will be used. So it's guaranteed that the client-side receives the message as soon as possible. |
If you want to use the publish mechanism, simply register a listener on your connection: | If you want to use the publish mechanism, simply register a listener on your connection: | ||
Line 37: | Line 37: | ||
on the server-side. | on the server-side. | ||
- | **But be careful** if you run in a Thread, because the broker won't be available outside the server execution thread. So, use a cached instance of the broker, e.g.: | + | **But be careful** if you run in a thread because the broker won't be available outside the server execution thread. So, use a cached instance of the broker, e.g.: |
<code java> | <code java> |