Versiones comparadas

Clave

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

...

Bloque de código
<fw:socket channel="someChannel" onmessage="function(message) { console.log(message); }" />

La función JavaScript onmessage, se invocará con tres argumentos:

  • menssage: el mensaje push como objeto JSON.
  • channel: el nombre del canal, útil en caso de que pretenda tener un oyente global o desee controlar manualmente el cierre.
  • event: la instancia sin procesar de MessageEvent, útil en caso de que desee inspeccionarla.


En caso de que su servidor esté configurado para ejecutar el contenedor WS en un puerto TCP diferente al contenedor HTTP, puede usar el atributo de puerto opcional para especificar explícitamente el puerto.

Bloque de código
<fw:socket port="8000" ... />


Cuando se conecta correctamente, el websocket está abierto de forma predeterminada siempre que el documento esté abierto, y se volverá a conectar automáticamente a intervalos cada vez mayores cuando la conexión se cierre o se cancele como resultado de, por ejemplo, un error. un error de red o reinicio del servidor. No se volverá a conectar automáticamente cuando el primer intento de conexión ya falle. El websocket se cerrará implícitamente una vez que se descargue el documento (por ejemplo, al navegar, cerrar la ventana/pestaña del navegador, etc.). Para volver a conectarse con éxito después de reiniciar el servidor o al cambiar a un nuevo nodo de servidor, debe asegurarse de que la persistencia de la sesión esté habilitada en el servidor.


Utilización en el Servidor

En el backend, se puede inyectar una instancia de PushContext a través de la anotación @Push, junto con el nombre del canal en cualquier componente Seam, donde se necesite enviar un mensaje push. Para enviar el mensaje, se invoca al método PushContext.send(Object) con cualquier objeto Java que represente el mensaje.

Bloque de código
@Push
private PushContext someChannel;

public void sendMessage(Object message) {
    someChannel.send(message);
}