HTTP et WebSocket sont tous deux des protocoles de communication utilisés dans la communication client-serveur.
Protocole HTTP : HTTP est unidirectionnel où le client envoie la requête et le serveur envoie la réponse. Prenons un exemple lorsqu'un utilisateur envoie une requête au serveur cette requête se présente sous la forme HTTP ou HTTPS, après réception d'une requête le serveur envoie la réponse au client, chaque requête est associée à une réponse correspondante, après avoir envoyé la réponse le la connexion est fermée, chaque requête HTTP ou HTTPS établit à chaque fois la nouvelle connexion au serveur et après avoir obtenu la réponse, la connexion se termine d'elle-même.
HTTP est un protocole sans état qui s'exécute sur TCP, un protocole orienté connexion. Il garantit la livraison du transfert de paquets de données à l'aide des méthodes d'établissement de liaison à trois voies et retransmet les paquets perdus.
HTTP peut s'exécuter sur n'importe quel protocole fiable orienté connexion tel que TCP, SCTP. Lorsqu'un client envoie une requête HTTP au serveur, une connexion TCP est ouverte entre le client et le serveur et après avoir obtenu la réponse, la connexion TCP est terminée, chaque requête HTTP ouvre une connexion TCP distincte au serveur, par exemple. si le client envoie 10 requêtes au serveur, 10 connexions TCP distinctes seront ouvertes. et fermez-vous après avoir obtenu la réponse/le repli.
Informations du message HTTP codées en ASCII, chaque message de requête HTTP composé de la version du protocole HTTP (HTTP/1.1, HTTP/2), des méthodes HTTP (GET/POST, etc.), des en-têtes HTTP (type de contenu, longueur du contenu), des informations sur l'hôte, etc. . et le corps qui contient le message réel qui est transféré au serveur. La taille des en-têtes HTTP variait de 200 octets à 2 Ko, la taille courante de l'en-tête HTTP étant de 700 à 800 octets. Lorsqu'une application Web utilise davantage de cookies et d'autres outils côté client qui étendent les fonctionnalités de stockage de l'agent, elle réduit la charge utile de l'en-tête HTTP.

WebSocket : WebSocket est bidirectionnel, un protocole full-duplex utilisé dans le même scénario de communication client-serveur, contrairement à HTTP à partir duquel il démarre ws:// ou wss:// . Il s'agit d'un protocole avec état, ce qui signifie que la connexion entre le client et le serveur restera active jusqu'à ce qu'elle soit interrompue par l'une ou l'autre des parties (client ou serveur). Après avoir fermé la connexion par le client et le serveur, la connexion est terminée aux deux extrémités.
tutoriel sélénium java
Prenons un exemple de communication client-serveur, il y a le client qui est un navigateur web et un serveur, chaque fois que l'on initie la connexion entre client et serveur, le client-serveur fait la prise de contact et décide de créer une nouvelle connexion et cette connexion restera en vie jusqu'à ce qu'il soit terminé par l'un d'entre eux. Lorsque la connexion est établie et active, la communication s'effectue en utilisant le même canal de connexion jusqu'à ce qu'elle soit terminée.
C'est ainsi qu'après l'établissement de liaison client-serveur, le client-serveur décide d'une nouvelle connexion pour la maintenir en vie, cette nouvelle connexion sera connue sous le nom de WebSocket. Une fois l'établissement du lien de communication et la connexion ouverts, l'échange de messages s'effectuera en mode bidirectionnel jusqu'à ce que la connexion persiste entre client-serveur. Si l'un d'entre eux (client-serveur) décède ou décide de fermer la connexion, la connexion est fermée par les deux parties. Le fonctionnement du socket est légèrement différent du fonctionnement de HTTP, le code d'état 101 désigne le protocole de commutation dans WebSocket.

Quand peut-on utiliser une socket Web :
- Application Web en temps réel : l'application Web en temps réel utilise un socket Web pour afficher les données côté client, qui sont envoyées en permanence par le serveur backend. Dans WebSocket, les données sont continuellement poussées/transmises dans la même connexion déjà ouverte, c'est pourquoi WebSocket est plus rapide et améliore les performances de l'application.
Par ex. dans un site Web de trading ou de trading Bitcoin, l'affichage des fluctuations de prix et des données de mouvement est continuellement transmis par le serveur backend vers le client à l'aide d'un canal WebSocket.
Application de jeu : dans une application de jeu, vous pouvez vous concentrer sur cela, les données sont reçues en permanence par le serveur, et sans actualiser l'interface utilisateur, elles prendront effet à l'écran, l'interface utilisateur est automatiquement actualisée sans même établir la nouvelle connexion, c'est donc très utile dans une application de jeu.
Application de chat : les applications de chat utilisent WebSockets pour établir la connexion une seule fois pour l'échange, la publication et la diffusion du message entre les abonnés. Il réutilise la même connexion WebSocket, pour envoyer et recevoir le message et pour le transfert de message individuel.
Quand ne pas utiliser WebSocket : WebSocket peut être utilisé si nous souhaitons que des flux de données mis à jour ou continus en temps réel soient transmis sur le réseau. Si nous voulons récupérer d'anciennes données, ou si nous voulons obtenir les données une seule fois pour les traiter avec une application, nous devrions utiliser Protocole HTTP , les anciennes données qui ne sont pas requises très fréquemment ou récupérées une seule fois peuvent être interrogées par une simple requête HTTP, donc dans ce scénario, il est préférable de ne pas utiliser WebSocket.
Note: Les services Web RESTful suffisent pour récupérer les données du serveur si nous ne chargeons les données qu'une seule fois.
Différences entre les connexions HTTP et WebSocket :
| Connexion WebSocket | Connexion HTTP |
|---|---|
| WebSocket est un protocole de communication bidirectionnel qui peut envoyer les données du client au serveur ou du serveur au client en réutilisant le canal de connexion établi. La connexion est maintenue active jusqu'à ce qu'elle soit interrompue par le client ou le serveur. | Le protocole HTTP est un protocole unidirectionnel qui fonctionne au-dessus du protocole TCP qui est un protocole de couche de transport orienté connexion. Nous pouvons créer la connexion en utilisant les méthodes de requête HTTP après avoir obtenu la fermeture de la connexion HTTP de réponse. |
| Presque toutes les applications en temps réel comme les services (trading, surveillance, notification) utilisent WebSocket pour recevoir les données sur un seul canal de communication. | L'application RESTful simple utilise le protocole HTTP sans état. |
| Toutes les applications fréquemment mises à jour utilisaient WebSocket car il est plus rapide que la connexion HTTP. | Lorsque nous ne souhaitons pas conserver une connexion pendant une durée déterminée ou réutiliser la connexion pour transmettre des données ; Une connexion HTTP est plus lente que WebSockets. |
Note: En fonction de votre projet vous devez choisir où ce sera WebSocket ou HTTP Connection.