WebSockets vs. Http / 2 vs. SSE comparé

WebSockets vs. Http / 2 vs. SSE comparé
Il existe trois technologies ou fonctionnalités primaires en ce qui concerne le monde des protocoles de communication de données et de serveur-client: HTTP / 2, SSE et WebSockets. Selon votre point de vue et vos exigences, l'une de ces technologies peut être des concurrents ou des alliés.

Ce tutoriel décomposera ce que ces technologies impliquent et ce que chacun d'eux offre. Cela vous aidera à comprendre et à faire un choix en fonction des fonctionnalités que vous recherchez.

NOTE: Ce guide n'est pas une amorce sur aucune des technologies mentionnées ci-dessus. C'est simplement un aperçu de ce que l'on peut offrir par rapport à l'autre.

Commençons:

Sockets websockets

WebSocket est un protocole standard qui fournit une connexion persistante entre un serveur et un client. Les lignes WebSockets sont bidirectionnelles. Cela signifie qu'un serveur et un client et envoyer et recevoir des données sont dans le même canal. Il s'agit d'un protocole de communication complet implémenté sur la prise TCP / IP.

WebSockets aide à contrer les limites du protocole HTTP.

Premièrement, le protocole HTTP n'est pas bidirectionnel. Le client demande une ressource spécifique sur le serveur. Une fois que le serveur a trouvé et envoyé la ressource au client, la connexion se ferme. Cela signifie que sur un flux de données très actif tel que le service de streaming, il y aura trop de demandes de serveur.

Contrairement à HTTP, WebSockets peut maintenir une connexion jusqu'à ce que le client ou le serveur le termine. Il fonctionne en créant d'abord une poignée de main entre le client et le serveur, suivi d'un en-tête de mise à niveau. Une fois établi, un flux de données entre le serveur et le client est établi.

Le diagramme ci-dessus illustre le fonctionnement du protocole HTTP par rapport à WebSockets.

NOTE: Les diagrammes ci-dessus ne donnent pas une connaissance pratique à part entière des protocoles HTTP ou WebSocket.

Http / 2

HTTP / 2 ou HTTP2 est la deuxième implémentation du protocole réseau HTTP utilisé pour définir le format et la transmission des données. Le but de HTTP / 2 est d'améliorer les performances par rapport à HTTP en réduisant la latence, appliquée en activant des fonctionnalités telles que la demande complète et la réaction, et la minimisation des frais généraux de protocole via la compression des fichiers d'en-tête.

HTTP / 2 est pris en charge dans les principaux navigateurs et utilisé tout autour du Web.

Voici quelques-uns des avantages offerts par HTTP / 2:

  1. Compatible en arrière avec HTTP / 1, y compris les codes d'état, les en-têtes et les URI sont réservés.
  2. Stream de données multiples dans une seule connexion via la demande de multiplexage.
  3. La compression des en-tête, ce qui améliore considérablement les performances.
  4. Exécution de la tâche via le protocole binaire au lieu de commandes de texte qui simplifient l'application de commande.
  5. Le serveur puste permettant au serveur d'envoyer des données supplémentaires au client demandeur même si les données ne sont pas initialement demandées.
  6. Il supprime des fonctionnalités telles que le rupture de domaine.

Ce qui précède est un aperçu de base des caractéristiques du protocole HTTP / 2. Vous trouverez ci-dessous une simple illustration du protocole HTTP.

Crédit: Mozilla Developer Network https: // développeur.mozilla.org / en-us / docs / web / http / aperçu

Événements de serveur

L'événement de serveur (SSES) est une technologie qui permet au client de recevoir des mises à jour d'un serveur HTTP. Bien qu'il ait toujours été possible de pousser les mises à jour du serveur vers le client, le client devrait demander si des mises à jour existent sur le serveur. À l'aide de SSE, les mises à jour sont automatiques.

Les SSE sont implémentés à l'aide de flux de données HTTP réguliers. Par conséquent, les SSE sont limités au pool de connexion du client (navigateur) de 6 connexions HTTP simultanées à un seul serveur. Cependant, ils ne fournissent pas la fonctionnalité pour détecter un client supprimé.

https: // html.spécifier.whatwg.org / multipage / serveur-événements-événements.HTML # Server-Sent-Events

Vous pouvez également trouver des ressources pour le client SSE dans les liens fournis ci-dessous:

https: // github.com / mPetazzoni / sseclient

https: // github.com / btubbs / sseclient

WebSockets vs. Http / 2 vs. SSE

Maintenant, passons au sujet et lisons les différences entre les technologies discutées.

Websocket Http / 2 SSE
Un duplex plein Mi-duplex Un duplex plein
Bidirectionnel L'interaction d'un client avec une méthode HTTP spécifique est requise Unidirectionnel
Moins de ressource Ajout de frais généraux à la poignée de main SSL
Le service Push est une implémentation de base du protocole Seulement pris en charge dans HTTP / 2 La technologie de base
Soutenu par des navigateurs majeurs Prise en charge de tous les navigateurs Tous les navigateurs ne le soutiennent pas.
1024 connexions parallèles 6-8 Connexions parallèles 6 connexions parallèles
Équilibrage de charge non standard Équilibrage de la charge standard Équilibrage de la charge standard

Conclusion

Nous avons parcouru des technologies telles que les webockets, leur fonctionnement et leur implémentation. Ce didacticiel ne sert que de base aux technologies mentionnées. Considérez les ressources externes pour en savoir plus.