WebSockets para mejorar las interfaces de usuario (GUI)

En 3f estamos orientando nuestro desarrollo a lo que hoy en día se conoce como tecnologías en innovación, siguiendo nuestro slogan: tecnología con pasión.

Entonces, para enmarcarnos dentro de esta filosofía, nuestras aplicaciones consideramos importante sean:

  • robustas y estables: sostenerse en pilares que reduzcan la probabilidad a problemas
  • interactivas: interfaces más interesantes, menos complejas y intuitivas
  • potentes: a través del uso de nuevas técnicas de programación lograr mejores resultados con menores costos

En el fondo, estos tres objetivos siempre fueron un pilar fundacional cuando se formó el equipo de trabajo, pero, como no podría ser de otra mantera uno a veces pierde el rumbo. Estamos intentando corregirlo. Concentrarnos en hacer lo que realmente nos gusta y, como suele decirse, divertirse haciéndolo.

En esta última etapa una de las funciones más interesantes que han surgido es la implementación de aplicaciones web MVC con la ayuda de WebSockets (una función relativamente moderna, de html5, que solo los más nuevos navegadores soportan) donde con una conexión directa entre el cliente (navegador web: Chrome, Firefox, IE, Opera) y el servidor (sea cual fuere, en nuestro caso las últimas versiones de Tomcat). En antiguas épocas este mismo problema se resolvía usando algunos “hacks” como iframe escondido, pedidos a servidores  “congelados” (long-polling) o sencillamente varios pedidos cada cierta cantidad de tiempo lo cual no es precisamente una conexión bidireccional, sino más bien, una simulación de ello.

Para resolver esta problemática estamos aprovechando la implementación de Atmosphere y un plugin de Grails (nuestro orquestador caballito de batalla para muchos proyectos). Lo interesante es que esta implementación, automáticamente selecciona cuál es el mejor método de intercambiar información (de los nombrados más arriba), ahorrándonos todo el trabajo de detección de versiones y soporte entre ambas partes.

Sin entrar en el detalle técnico que puede verse aqui orientado principalmente al desarrollo de juegos (una de las industrias en la que hemos estado poniendo énfasis durante los últimos años). Lo que estamos usando al día de la fecha es:

  • Knockoutjs para la lógica de presentación
  • Amplifyjs para la gestión de eventos y base de datos local (o caché) – ver ejemplo.
  • Crossroads para la gestión de “rutas” (algo bastante novedoso para nosotros pero de lo que hablaremos en otro post)

Además, este artículo, comenta algunos detalles sobre el patrón observable, también conocido como publish/subscribe, como técnica para intercambiar información y simplificar la interacción con el usuario.

Con esto nuestro objetivo principal es llegar a desarrollar aplicaciones que cumplan con nuestras premisas. En muchos ámbitos esto se conoce como SPA (Single Page Applications).

Se que es mucho para procesar… aunque esa es la idea… 😉


Discussion Area - Leave a Comment