Curso Avanzado de Node.js - Yessica54/carrera-front-end GitHub Wiki

Características de la plataforma Node.js

Networking y entrada y salida: Más de 1/4 del core de Node.js está dedicado a Networking. Node.js está especialmente diseñado para tipos de trabajo de entrada y salida.

Node.js es modular. npm es el registro de paquetes OpenSource más grande del mundo. El sistema modular de Node.js resuelve los problemas dependency hell.

La característica principal de Node.js es que podemos trabajar de manera asíncrona y orientada a objetos.

Node.js es muy bueno para aplicaciones en tiempo real o para orquestación de recursos entre múltiples aplicaciones.

Node.js no es bueno para computaciones que requieren uso de la CPU, ni para desarrollar aplicaciones como Systems programming.

¿Qué tipo de aplicaciones podemos desarrollar con Node.js?

Node.js es el proyecto open source con el crecimiento más rápido del mundo en este momento. Muchas empresas están empezando no solo a utilizarlo sino a contribuir y patrocinar y tienen empleados dedicados a que aporten al proyecto y eso es lo que permite que tenga un crecimiento tan grande.

  • Aplicaciones de escritorio.
  • Dispositivos embebidos.
  • Servidores web.
  • Aplicaciones móviles: hace poco anunciaron el soporte para Android.

Cómo funciona el modelo Pub/Sub en MQTT y Web Sockets

Pub/Sub

Es un protocolo de transporte de mensajes Cliente/Servidor donde el servidor emite un mensaje basado en ciertos filtros y el cliente recibe los mensajes a los que está suscrito.

Existen 2 tipos de suscripción: Topic-based y Content-based Cada vez que un mensaje es publicado será recibido por el resto de dispositivos adheridos a un tópico del protocolo. Me recuerda mucho al patrón de diseño Observer, sólo con la diferencia de que en Pub/Sub el cliente no conoce al servidor y el servidor no conoce al cliente y esta comunicación la maneja el event bus, mientras que en Observer el cliente y servidor tienen comunicación directa.

MQTT (Message Queue Telemetry Transport)

Es un protocolo de transporte de mensajes Cliente/Servidor basado en el patrón Pub/Sub, donde existen publicaciones y subscripciones a los denominados “tópicos”. Cada vez que un mensaje es publicado será recibido por el resto de dispositivos adheridos a un tópico del protocolo.

Web sockets

Es una tecnología avanzada que hace posible abrir una sesión de comunicación interactiva entre el navegador del usuario y un servidor. Con esta API, puede enviar mensajes a un servidor y recibir respuestas controladas por eventos sin tener que consultar al servidor para una respuesta.

Es una tecnología que proporciona un canal de comunicación bidireccional y full-duplex sobre un único socket TCP. Está diseñada para ser implementada en navegadores y servidores web, pero puede utilizarse por cualquier aplicación cliente/servidor.

Introducción a pruebas unitarias con Ava.js

Se instala con el siguiente comanado

npm i --save-dev ava

El paquete defaults nos sirve para tomar por defecto las configuraciones de la base de datos

npm i --save defaults

El paquete sqlite3 se utilzara para los test automatizados

npm i sqlite3 --save-dev

Definición de un Broker de Mensajería

Platziverse MQTT va a ser el servidor encargado de recibir los mensajes de los agentes de monitoreo y re-distribuírlos a los agentes que estarán “escuchando” o a la espera de esos mensajes.

Un “message broker” es decir un intermediario que se encargará de recibir un mensaje y redistribuírlo para esto nosotros vamos a implementar el protocolo MQTT para que realice esta función en nuestro servidor por las ventajas que este ofrece al estar optimizado para aplicaciones de IoT este protocolo “máquina a máquina” utiliza un ancho de banda muy bajo y puede funcionar con conexiones móviles y situaciones de ese estilo dónde el ancho de banda es limitado en muchas ocaciones y el consumo de datos debe ser lo más bajo posible.

``