WebSockets vs. Http/2 vs. SSE comparado

WebSockets vs. Http/2 vs. SSE comparado
Hay tres tecnologías o características primarias cuando se trata del mundo de los protocolos de comunicación de datos y del cliente-cliente: HTTP/2, SSE y WebSockets. Dependiendo de su punto de vista y requisitos, cualquiera de estas tecnologías puede ser competidores o aliados.

Este tutorial desglosará lo que implican estas tecnologías y lo que cada uno de ellos ofrece. Esto lo ayudará a comprender y tomar una decisión dependiendo de las características que esté buscando.

NOTA: Esta guía no es una introducción en ninguna de las tecnologías mencionadas anteriormente. Es simplemente una descripción general de lo que uno puede ofrecer sobre el otro.

Comencemos:

Redes web

WebSocket es un protocolo estándar que proporciona una conexión persistente entre un servidor y un cliente. WebSockets son bidireccionales. Esto significa que un servidor y cliente y enviar y recibir datos están en el mismo canal. Es un protocolo de comunicación Full-Duplex implementado en TCP/IP Socket.

WebSockets ayuda a contrarrestar los límites del protocolo HTTP.

Primero, el protocolo HTTP no es bidireccional. El cliente solicita un recurso específico en el servidor. Una vez que el servidor encuentra y envía el recurso al cliente, la conexión se cierra. Eso significa que en un flujo de datos muy activo, como el servicio de transmisión, habrá demasiadas solicitudes de servidor.

A diferencia de HTTP, WebSockets puede mantener una conexión hasta que el cliente o el servidor la termine. Funciona primero creando un apretón de manos entre el cliente y el servidor, seguido de un encabezado de actualización. Una vez establecido, se establece un flujo de datos entre el servidor y el cliente.

El diagrama anterior ilustra cómo funciona el protocolo HTTP en comparación con WebSockets.

NOTA: Los diagramas anteriores no ofrecen un conocimiento práctico completo de los protocolos HTTP o WebSocket.

Http/2

HTTP/2 o HTTP2 es la segunda implementación del protocolo de red HTTP utilizado para definir el formato y la transmisión de datos. El propósito de HTTP/2 es mejorar el rendimiento a través de HTTP reduciendo la latencia, aplicado mediante características habilitadoras como solicitudes y respuesta completa, y minimizando la sobrecarga del protocolo a través de la compresión de archivos de encabezado.

HTTP/2 es compatible con los principales navegadores y se usa en toda la web.

Las siguientes son algunas de las ventajas ofrecidas por HTTP/2:

  1. Se reservan compatibles con HTTP/1, incluidos los códigos de estado, los encabezados y los URI.
  2. Múltiples flujo de datos en una sola conexión a través de la multiplexación de solicitudes.
  3. Compresión de encabezado, lo que mejora el rendimiento significativamente.
  4. Ejecución de tareas a través del protocolo binario en lugar de comandos de texto que simplifican la aplicación de comandos.
  5. Push del servidor permitiendo que el servidor envíe datos adicionales al cliente solicitante incluso si los datos no se solicitan inicialmente.
  6. Elimina características como fragmentos de dominio.

Lo anterior es una descripción básica de las características del protocolo HTTP/2. A continuación se muestra una ilustración simple del protocolo HTTP.

Crédito: Red de desarrollador de Mozilla https: // desarrollador.Mozilla.org/en-us/docs/web/http/desaceleración

Eventos del servidor

El evento Servidor-Sent (SSES) es una tecnología que permite al cliente recibir actualizaciones de un servidor HTTP. Aunque siempre ha sido posible impulsar las actualizaciones del servidor al cliente, el cliente tendría que solicitar si existen actualizaciones en el servidor. Usando SSE, las actualizaciones son automáticas.

Los SSE se implementan utilizando flujos de datos HTTP regulares. Por lo tanto, los SSE se limitan al grupo de conexión del cliente (navegador) de 6 conexiones HTTP concurrentes a un servidor. Sin embargo, no proporcionan la funcionalidad para detectar un cliente caído.

https: // html.Especificaciones.Whatwg.org/multipage/servidor-sent-eventos.html#servidor-sent-eventos

También puede encontrar recursos para el cliente SSE en los enlaces que se proporcionan a continuación:

https: // github.com/mpetazzoni/sseclient

https: // github.com/btubbs/sseclient

WebSockets vs. Http/2 vs. SSE

Ahora llegemos al tema y enumeremos las diferencias entre las tecnologías discutidas.

Websocket Http/2 SSE
Duplex completo Medio duplex Duplex completo
Bidireccional Se requiere la interacción de un cliente con un método HTTP específico Unidireccional
Menos sobrecarga Sobre la cabeza agregada al apretón de manos SSL
Service Push es una implementación base del protocolo Solo compatible en http/2 La tecnología base
Apoyado por los principales navegadores Compatible con todos los navegadores No todos los navegadores lo admiten.
1024 conexiones paralelas 6-8 conexiones paralelas 6 conexiones paralelas
Equilibrio de carga no estándar Equilibrio de carga estándar Equilibrio de carga estándar

Conclusión

Hemos repasado tecnologías como WebSockets, cómo funcionan y su implementación. Este tutorial solo sirve como base para las tecnologías mencionadas. Considere los recursos externos para obtener más información.