![]()
El otro día ya nos referimos a jWebSocket en el Blog: https://unpocodejava.wordpress.com/2012/04/24/websockets-en-navegadores-no-html5-jwebsocket/
Como decíamos jWebSocket es una solución de comunicación bidireccional Java+Javascript basada en WebSockets.
Además de ser una implementación de los WebSockets en Java sus características lo hacen muy interesante para cierto tipos de soluciones, veamos algunas de estas características:
· Despliegue: ofrece un conjunto de JARs y de JSs que permiten incluirlo en cualquier aplicación HTML+JS+JEE. También ofrece un modelo para usarlo como extensión de Tomcat.
· Listeners: Los listeners son el mecanimos para procesar mensajes de los clientes WebSockets además de eventos como la conexión o desconexión. Los listeners son propios de cada aplicación (a diferencia de los plugins que sirven para encapsular funcionalidad).
Veamos un ejemplo:
1. Primero desarrollaré mi listener
2. Lo registraré en el Server:
3. Lo registro en el cliente con Javascript:
4. Y finalmente lo uso desde Javascript:
· Plugins: los plugins están pensados para crear extensiones.
o JWebSocket ya ofrece una serie de plugins pero permite crear otros y añadirlos a la cadena de plugins.
o Los plugins se encapsulan como JARs y permiten encapsular funcionalidad.
Veamos como crear un plugin que implementa la funcionalidad de solicitad la hora del Servidor (requestServerTime)
1. Creo el plugin Servidor:
…
…
2. Lo registro en el Servidor:
3. Creo la parte cliente del Plugin (también podría hacerlo como un Listener):
4. Uso el plugin:
![]()
· RPC: permite desde un cliente web Javascript llamar funciones Java en el Server y recibir el resultado. También permite que el Servidor llame funciones del cliente.
o Permite intercambiar objetos JSON, XML y CSV (este apropiado para objetos tipo clave1=valor1;clave2=valor2;….)
o Soporta Single-Threaded y Multi-Threaded RPCs: en el modelo Single las llamadas hechas desde un cliente se responden en el mismo orden en el que se invocaron.
o llamar funciones remotas
· Channels: permite que las aplicaciones abran diferentes canales lógicos independientes.
o Los canales pueden ser:
§ Públicos: todos los clientes pueden suscribirse a este tipo de canal
§ Privados: para comunicaciones entre 2 o más clientes. Se protegen con un par Access key/secret key. Para suscribirse es necesario saben el id del canal y el Access key.
§ De Sistema: usados por el servidor.
o Existen una serie de métodos para suscribirse, borrase una suscripción, autorizarse,… (subscribe, unsubscribe, getChannels, getSuscriptions, authorize, createChannel,…)
· Tokens: es lo que intercambian los clientes y servidores. Es un objeto que contiene uno o varios conjuntos de clave-valor (en Java es un HashMap).
o Se soportan formatos de Token JSON, CSV y XML.
o A través de los plugins ya implementados existen una serie de Token ya implementados:
§ Tokens S2C (Server To Client): welcome (se envía del cliente al servidor la primera vez que se conecta), goodbye, respondse, event
§ Tokens C2S (Client to Server): login, logout, close, send, echo, broadcast, ping, getClients
· Events: es un plugin que permite ejecutar código en servidor en base a un evento producido
o Integración con Spring: este plugin está integrado con Spring a nivel de IoC, Seguridad (a través de Spring Security) y Validaciones
Se configura:
· Soporte multinavegador: en la tabla se muestran en verde los navegadores que lo soportan a través de HTML5 WebSockets, el resto lo soportan a través del Bridge Flash:
Espero que este repaso os haya servido para aclarar en qué escenarios es interesante el uso de WebSockets…en un próximo artículo hablaremos de Atmosphere y repasaremos otros escenarios en los que aplica su uso.














Replica a Un poco de Atmosphere Framework « Java Mania Cancelar la respuesta