Aplicaciones Interactivas y Eficientes con Websockets

Aplicaciones Interactivas y Eficientes con Websockets

En este artículo daremos un vistazo general a la tecnología de WebSockets y cómo puede ayudarnos a crear aplicaciones cliente servidor más interactivas, eficientes y con menos esfuerzo.

Recordemos cómo funciona el protocolo HTTP que es uno de los más comunes. La comunicación se hace por TCP y se establecen canales para enviar y recibir información, siempre se empieza con una solicitud que el cliente hace al servidor, quien a su vez envía una respuesta al cliente, y luego se cierran los canales empleados.

¿Y qué pasa si el servidor quiere enviar datos al cliente sin que este haya iniciado una solicitud? HTTP no lo permite directamente y es algo muy común en varias aplicaciones, por ejemplo, un chat puede informarle que alguien le envía un mensaje, o un juego de ajedrez puede avisarle que acaba de perder una pieza, o una aplicación de bolsa de valores puede informarle que sus acciones han subido de valor.

Se han usado varias alternativas para lograr efectos similares, por ejemplo, se hace que el cliente pregunte constantemente al servidor si hay novedades para él, aunque es muy ineficiente preguntar siempre lo mismo para recibir casi siempre la misma respuesta, además el cliente no recibe la información tan pronto como se origina sino que hay un cierto retraso, tan grande como la distancia mínima entre las peticiones periódicas, entre más peticiones este retraso se reduce, pero aumenta la sobrecarga sobre la red.

Técnicas más avanzadas incluyen cosas como valerse de una petición HTTP normal, pero no enviar la respuesta al cliente sino hasta que haya algo que notificarle, esto resulta complejo de programar, mantener y tampoco resuelve del todo el problema.

Es ahí donde entran los WebSockets, éstos nos permiten tener una comunicación bidireccional y fullduplex, es decir simultánea, entre cliente y servidor, es similar a HTTP en que se basa en TCP y se abren canales para envío y recepción de datos, sin embargo, estos permanecen abiertos hasta que el servidor o el cliente quieran cerrarlos. La comunicación por WebSockets inicia como una solicitud HTTP, lo cual nos da la gran ventaja de que no hace falta abrir ningún puerto adicional y es menos probable tener problemas a nivel de proxies y firewalls.

Los WebSockets nos permiten usar los mismos canales para enviar cualquier cantidad de solicitudes y recibir cualquier cantidad de respuestas, y recibir información sin que haya una solicitud previa. Aunque los WebSockets fueron diseñados para su uso en navegadores, realmente se pueden usar en cualquier aplicación cliente servidor.

Un servidor típico constará de unos pocos métodos:

  • Los que se usan para enviar un mensaje a un cliente.
  • Los que son llamados cuando llega un mensaje de algún cliente.
  • Los que son llamados cuando se conecta y desconecta un cliente o cuando se presenta algún error.

Del lado del cliente encontraremos algo muy similar:

  • Métodos para conectarnos al servidor
  • Métodos para enviar mensajes al servidor.
  • Métodos que serán llamados cuando llegue un mensaje

Existen implementaciones WebSockets en muchos de los principales servidores cómo Glassfish, PHP o ASP.net, de lado del cliente tenemos soporte en las versiones más recientes de IE, Edge, Firefox, Chrome PC y Android, Safari IOS y OSX, Opera y Android Browser, también hay librerías que nos permiten programar clientes en J2SE y .Net entre otros ambientes de escritorio.

Esperamos ver en el futuro cercano más y más aplicaciones Web haciendo uso de estás tecnologías para brindar servicios y soluciones novedosas, originales y eficientes, como las que siempre estamos buscando y perfeccionando para nuestros clientes.

Deja un Comentario

CAPTCHA code
X