EN CONSTTRUCCIÓN ... |
<fw:socket> es un componente UI que abre una conexión push basada en websocket unidireccional (de servidor a cliente) en el lado del cliente a la que se puede acceder desde el lado del servidor a través de la interfaz PushContext inyectada mediante la anotación @Push.
Primero hay que activar los websockets mediante el siguiente parámetro de contexto booleano en web.xml:
<context-param>
<param-name>es.um.atica.fundeweb.SOCKET_ENDPOINT_ENABLED</param-name>
<param-value>true</param-value>
</context-param> |
Lo que registrara un SocketEndpoint en el servidor.
Declare la etiqueta <fw:socket> en la vista (página) con al menos un nombre de canal (channel) y una función JavaScript llamada onmessage. El nombre del canal no puede ser una expresión EL y solo puede contener caracteres alfanuméricos, guiones, guiones bajos y puntos. Aquí hay un ejemplo que hace referencia a una función de escucha de JavaScript existente (¡no incluya los paréntesis!).
<fw:socket channel="someChannel" onmessage="socketListener" /> |
function socketListener(message, channel, event) {
console.log(message);
} |
También se puede añadir la función JavaScript en el propio componente:
<fw:socket channel="someChannel" onmessage="function(message) { console.log(message); }" /> |
La función JavaScript onmessage, se invocará con tres argumentos:
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.
<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.