Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

Se puede establecer el valor del atributo connected directamente a false y controlar manualmente la apertura de la conexión push en la parte cliente invocando con Javascript a FundeWeb.Push.open(channel), pasando el nombre del canal como parámetro, . Por ejemplo, cuando se lance el listener onclick de un botón que inicia una ejecución de una tarea asíncrona de larga duración en la parte servidor. Es realmente útil, para conexiones de ámbito vista, que no necesitan realizar una carga en página de manera inmediata.

Bloque de código
<p:commandButton ... onclick="OmniFaces.Push.open('foo')">
    <p:ajax ... />
</p:commandButton>
<fw:socket channel="foo" scope="view" ... connected="false" />

 

En el caso de querer tener una comunicación push de un solo mensaje, normalmente porque se quiere presentar el resultado de una tarea asíncrona lanzada desde la vista, como es el caso del ejemplo anterior, se puede cerrar la conexión push invocando en el cliente  FundeWeb.Push.open(channel), pasando el nombre del canal como parámetro. Por ejemplo, podemos usar el listener Javascript onmessage para relizar la acción:

Bloque de código
function someSocketListener(message, channel) {
    // ...
    OmniFaces.Push.close(channel);
}


Es importante no mezclar las dos formas de controlar la conexión push. O se usa una expresión EL en el atributo connected, o se especifica connected="false" y la API Javascript  FundeWeb.Push para controlar la apertura/cierre de la conexión push. Mezclar ambas configuraciones puede provocar comportamientos impredecibles porque el estado de la vista Faces en el servidor no puede ser notificada de la apertura o cierre manual desde el cliente.


Eventos