BLOG | NGINX

Aplicações web en tiempo real con WebSocket y NGINX

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Rick Nelson
Rick Nelson
Publicado el 21 de julio de 2014

En la publicación del blog NGINX como proxy WebSocket analizamos el uso de NGINX como proxy de servidores de aplicação WebSocket . En esta publicación analizaremos algunos de los problemas de arquitectura e infraestructura a tener en cuenta al crear aplicações en tiempo real con WebSocket, incluidos los componentes que necesita y cómo puede estructurar sus sistemas.

WebSocket añade interactividad a HTTP

HTTP funciona bien para aplicações web que se basan en solicitud/respuesta, donde el flujo de comunicaciones siempre tiene al cliente iniciando la solicitud a la que responde un servidor back-end. Las aplicações web con una interacción más interactiva basada en mensajes entre el cliente y el servidor necesitan algo más que el simple HTTP. Los intentos anteriores de simular la comunicación dúplex completa a través de HTTP fueron complicados y tenían muchos inconvenientes. El protocolo WebSocket, junto con la interfaz JavaScript de WebSocket, proporciona una forma mucho más sencilla de crear este tipo de aplicações y al mismo tiempo reduce la cantidad de datos transferidos y la latencia.

La capacidad de crear una conexión de socket dúplex completo entre el cliente y el servidor permite el desarrollo de aplicações web basadas en eventos en tiempo real que utilizan comunicaciones push, poll o streaming. Al utilizar WebSocket, tanto el cliente como el servidor pueden iniciar la comunicación después de que se establece la conexión. Esto permite muchos tipos de aplicações web, incluidos juegos en línea, chat, seguimiento de acciones e informes en tiempo real de resultados deportivos.

Otro caso de uso para WebSocket es el desarrollo de aplicações basadas en WebRTC . WebRTC se utiliza para crear aplicações que realizan comunicaciones de navegador a navegador. Se requiere un canal de señalización separado para configurar las comunicaciones, y WebSocket es un buen protocolo para usar para esto.

Requisitos técnicos para una aplicação WebSocket

La infraestructura mínima requerida para una aplicação web WebSocket es un navegador cliente que ejecuta una aplicação JavaScript WebSocket y se comunica con un servidor WebSocket. Las versiones recientes de todos los navegadores principales ahora admiten WebSocket, pero es importante asegurarse de que los clientes tengan un navegador con soporte para WebSocket. Hay muchas opciones para servidores WebSocket y aquí hay algunos ejemplos para diferentes entornos (esta lista se proporciona para su conveniencia y no constituye un respaldo de NGINX, Inc.):

  Node.jsRuby
wsrieles de websocket
socket.ioem-websocket
SockJSmáquina web-ruby
  
PerlGato
MojoliciousCómo usar WebSocket
Net::WebSocket::Servidor
  
PHPWebLogic
TrinqueteUso de WebSockets en WebLogic Server
PHP-Push-WebSocket
PHP-Websockets
  
Python
conectores web
ws4py

Escalado de WebSockets a altos volúmenes de tráfico

Es posible utilizar un solo servidor WebSocket, pero el rendimiento de la aplicação está limitado por la capacidad del servidor, que también es un único punto de falla. Muchas aplicações en tiempo real se desarrollan con la esperanza de una adopción generalizada, pero puede ser difícil predecir la tasa de crecimiento. Para respaldar la creciente popularidad de una aplicação en tiempo real, la infraestructura debe poder:

  • Escala para soportar una gran cantidad de usuarios simultáneos
  • Proporcionar baja latencia al gestionar las comunicaciones entre el cliente y el servidor
  • Admite alta disponibilidad (lo que implica que no hay un único punto de falla)
  • Permitir que la configuración se cambie fácilmente y adaptarse a las condiciones cambiantes

Esto se puede lograr colocando NGINX delante de los servidores WebSocket y los servidores HTTP (ya que la mayoría de las aplicações WebSocket también usan HTTP), para que actúe como un proxy inverso y equilibrador de carga compatible con WebSocket. No todos los servidores proxy inversos proporcionan soporte directo para WebSocket. Algunos, como Elastic Load Balancing (ELB) en el entorno de Amazon Web Services (AWS), deben ejecutarse en modo TCP, lo que significa que no pueden manejar encabezados HTTP. El protocolo proxy se desarrolló para abordar esta limitación y NGINX también lo admite, lo que significa que WebSocket es totalmente compatible con AWS. El uso de NGINX como proxy inverso WebSocket brinda beneficios adicionales, como flexibilidad de enrutamiento y la capacidad de que NGINX finalice las conexiones SSL.

Una configuración típica de WebSocket usando NGINX podría verse así:

Aquí mostramos una variedad de clientes de escritorio y móviles que se conectan a un par de servidores NGINX de alta disponibilidad que equilibran la carga de un conjunto de servidores HTTP y WebSocket. Este tipo de configuración puede soportar la falla de un servidor WebSocket o un servidor NGINX y puede agregar o eliminar servidores WebSocket fácilmente. Además, todos los detalles de enrutamiento de cómo conectarse a los servidores WebSocket están ocultos para los clientes, lo que crea una infraestructura de aplicaciones WebSocket sólida y escalable. El rendimiento y la confiabilidad de las aplicações web en tiempo real son fundamentales. Contáctenos hoy para conocer cómo NGINX Plus puede ayudar a mejorar el rendimiento, la confiabilidad y la disponibilidad de sus aplicações.

Para obtener más información, consulte:


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.