WebSockets EAP 6.3, ¿qué es eso?

Una de las novedades que se han incluido en JBoss EAP 6.3 es el uso de los WebSockets, pero ¿qué son?

Según la especificación JSR-356, un Websocket provee un mecanismo de comunicación bidireccional entre el cliente (navegador) y el servidor, permitiendo el envío simultáneo de mensajes. Estamos acostumbrados a desarrollar aplicaciones en las que el cliente, mediante una petición, recibe una respuesta del servidor, por lo que el servidor sólo envía datos si el cliente lo solicita. Con el API WebSocket, permitimos que el servidor pueda enviar datos sin que el cliente realice ninguna petición, estableciendo una conexión (socket) única entre el cliente y el servidor.

Pero, ¿qué utilidad tiene?

Imaginemos por un momento una aplicación para una agencia de viajes en la que tenemos un menú desplegable con vuelos disponibles entre dos destinos; sabemos que muchas agencias están accediendo a los mismos datos y que por ello uno de los vuelos se completa y no deberíamos poder seleccionarlo. Previo al uso de los WebSockets, gracias a AJAX, podíamos tener el problema resuelto, pero sobrecargamos con peticiones constantes del tipo “¿algo ha cambiado?”, luego el servidor responde enviando la nueva vista de vuelos.
La gran ventaja de los WebSockets es que si una agencia completa los vuelos, la aplicación de nuestra agencia no tendría que preguntar al servidor si algo había cambiado, sino que el servidor envía directamente los cambios y regenera la vista de nuestro desplegable.

Los WebSockets aparecen en la especificación de Java EE 7, ¿cómo es posible usarlos en EAP 6.3?

Si bien es cierto que JBoss EAP 7 será Java EE 7 Compliant, mientras que EAP 6.3 es Java EE 6 compliant, podemos hacer uso de los WebSockets, pero tendremos que hacer una modificación en un descriptor de nuestra aplicación, WEB-INF/jboss-web.xml habilitando el WebSocket así:

<jboss-web version="7.2" 
   xmlns="http://www.jboss.com/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee schema/jboss-web_7_2.xsd">
    <enable-websockets>true</enable-websockets>
</jboss-web>

Con eso es más que suficiente, y si queréis probarlo podéis hacerlo con esta aplicación de chat.

Disfrutadlo!!

One thought on “WebSockets EAP 6.3, ¿qué es eso?

  1. Hola José David, te falta mencionar que hay que activar NIO mediante la siguiente instrucción, desde el directorio bin de jboss:

    alfonso-mbp-2:bin alfonso$ ./jboss-cli.sh –connect –file=/Users/alfonso/Downloads/simplechat-master/configure-http-connector.cli

    Lo explica en:
    https://github.com/burrsutter/simplechat

    Muchas gracias por tu ejemplo, ha sido lo que me ha hecho tener de dónde tirar del hilo para llegar a hacer funcionar websockets sobre JBoss EAP 6.3 sin tener JEE7 instalado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *