Hace unos días reflexionábamos sobre la diferencia entre HTTP (REST) y Websocket. Espero que las hayas entendido. Sobretodo para decidir en qué proyectos tiene sentido utilizar REST(HTTP), o para qué sirven los websockets.

Los websockets permiten mantener, o establecer una comunicación interactiva entre los navegadores de los usuarios y un servidor, para, por ejemplo enviar mensajes y recibir respuestas controladas por eventos sin tener que consultar al servidor para obtener una respuesta. ¿Recuerdas que en HTTP, para recuperar los datos necesitas pedirselos?

Arquitectura básica basada en WebSockets.

¿Qué es un WebSocket?

Un Websocket es un protocolo que proporciona canales de comunicación “full-duplex” sobre una conexión TCP. Siendo una comunicación bidireccional, el servidor puede enviar la información directamente al cliente en el momento de la conexión.

¿Por qué utilizar bibliotecas o frameworks?

Muchos desarrolladores prefieren utilizar la API de Websocket para implementar sus comunicaciones asíncronas, pues la mayoría de los navegadores soportan WebSockets. Pero, si por alguna razón quieres probar algún framework, o biblioteca “diferente”, que te ayude sobretodo a mejorar la productividad, te ayude a desarrollar y a desplegar aplicaciones más rápido, te dejo un listado de 3 de las bibliotecas más activas en el mercado para Node.js.

SocketCluster

SocketCluster es un framework opensource para Node.js. Como se espera de una herramienta de este tipo, soporta comunicaciones cliente-servidor, y también soporta comunicaciones grupales vía canales pub/sub. Es por lo tanto, una herramienta ideal para desarrollar sistemas de chat. Además, el framework está diseñado para escalar de forma fácil para cualquier número de procesos. Como curiosidad, ¡está optimizado para ejecutarse y auto-escalarse en Kubernetes! ;)

Entre otras de sus características técnicas se destaca por escalar linealmente mientras vas añadiendo cores de CPU y workers, es resiliente en el lado del cliente y en el backend, los sockets en el lado del cliente se vuelven a conectar automáticamente si pierden la conexión, y además el motor de autenticación es compatible con JSON Web Token (JWT).

¿Para qué sirve?

Adicionalmente a los sistemas de chat y a los Chatbots, SocketCluster es una buena opción para apps single-page que necesiten renderizar datos en tiempo real, aplicaciones financieras, criptomonedas o otras aplicaciones de blockchain, dispositivos IoT, juegos online multijugador, o aplicaciones móviles desarrolladas con React Native o Ionic.

En el sitio web oficial del SocketCluster encontrarás más información sobre este potente framework.

Feathers

Feathers es un framework web, microservicio para Node.js que te permite controlar los datos vía recursos RESTful, y sockets. La herramienta se auto-define como una “capa de API REST y en tiempo real para Node.js, React Native y el navegador”. Lo cierto es que crear aplicaciones, o prototipos con Feathers es realmente muy fácil, ¡y lo puedes hacer en minutos!

Con el plugin socket.io de Feathers puedes hacer llamadas a los métodos CRUD de los Servicios - el centro de cada aplicación de Feathers - y recibir eventos en tiempo real via Socket.io - tecnología utilizada en producción por muchas organizaciones - cuando estés trabajando con Node.js.

¿Por qué Feathers?

Además de los métodos CRUD referidos anteriormente, el framework está desarrollado 100% en JavaScript, con las características ES6 y eso le hace compatible con Express y Socket.io.

En el sitio web de Feathers podrás encontrar más información, documentación y ejemplos sobre esta herramienta.

socket.io

Como has visto en la herramienta anterior, socket.io es muy popular en el sector. Socket.io se define como “el motor en tiempo real más fiable y más rápido” y consiste de un servidor Node.js y una biblioteca de Javascript en el lado del cliente. Esta biblioteca es popular porque, entre otras cosas, proporciona fiabilidad para el lidiar con proxies y balanceadores de carga, así como firewalls y antivirus. También admite transmisiones binarias. Además de Feathers, Microsoft, Zendesk, o Trello son otras de las marcas que usan socket.io.

¿Por qué Socket.io?

Socket.io habilita la comunicación basada en eventos, la comunicación en tiempo real y bidireccional, y funciona en todas las plataformas, navegadores y dispositivos conocidos hasta la fecha. Es la biblioteca ideal si quieres generar logs, o gráficos en tiempo real, o si quieres permitir que tus usuarios editen un documento al mismo tiempo y vean los cambios de los demás.

Conclusión

Si tienes alguna sugerencia de otra biblioteca, o framework, ¡dinos algo! Hoy hemos hecho referencia a 3 de las que nos parecen más robustas y fiables, pero obviamente que puedes utilizar la que mejor se adapte a tus proyectos. Eso sí, ¡ojo a las vulnerabilidades que pueda tener alguna de estas herramientas!

¿Conocías a algunas de las 3 bibliotecas? ¿Las has utilizado en alguno tus proyectos? ¿Cómo ha sido la experiencia?

Fotografía: Free-Photos en Pixabay

Fuentes: