HTTP est basé sur le protocole TCP. En même temps, un seul du client et du serveur peut activement envoyer des données, ce qui est une communication semi-duplex.
Habituellement, lorsque nous ouvrons une certaine page Web, chaque fois que nous cliquons sur une option de la page Web, le frontal enverra une requête HTTP et le site Web renverra une réponse HTTP. Cette méthode de demande active par le client et de réponse par le serveur satisfait les scénarios fonctionnels de la plupart des pages Web. Mais dans ce cas, le serveur ne prendra pas l'initiative d'envoyer des messages au client. Dans des scénarios tels que les jeux Web, le client et le serveur doivent s'envoyer activement une grande quantité de données.
Par conséquent, nous avons besoin d'un nouveau protocole basé sur TCP, le nouveau protocole de couche application WebSocket.
Qu'est-ce que WebSocket ?
WebSocket est un protocole réseau pour la communication en duplex intégral sur une seule connexion TCP. Il utilise une poignée de main de type HTTP pour établir une connexion, puis utilise une connexion persistante distincte pour communiquer. Cette approche permet à WebSocket de communiquer en temps réel entre le navigateur et le serveur sans envoyer de requêtes HTTP plusieurs fois pour obtenir des données. Cela signifie que la connexion est persistante, elle reste ouverte jusqu'à ce qu'une partie ferme activement la connexion. Cela rend WebSocket très adapté aux applications en temps réel, car il n'a pas besoin d'établir et de fermer constamment la connexion.
Comment WebSocket établit-il une connexion ?
Une connexion WebSocket est généralement établie entre un client (tel qu'un navigateur) et un serveur. Le client envoie une requête HTTP pour établir une connexion et le serveur renvoie un accusé de réception indiquant que la connexion a été établie. Ensuite, le client et le serveur peuvent communiquer de manière bidirectionnelle via cette connexion. Les clients peuvent envoyer des messages aux serveurs et les serveurs peuvent envoyer des messages aux clients. Les messages peuvent être des tableaux d'octets arbitraires et peuvent être encodés dans n'importe quel format.
WebSocket est un outil de communication client-serveur essentiel, et son utilité doit être parfaitement comprise et les scénarios d'utilisation évités afin de bénéficier de son potentiel maximum.
Utilisations pratiques des WebSockets
L'utilisation la plus courante est dans le développement d'applications en temps réel, où il facilite l'affichage persistant des données côté client. Étant donné que le serveur principal renvoie constamment ces données, WebSocket permet de pousser ou de transférer ces données sans interruption au sein d'une connexion ouverte, ce qui accélère ces transferts de données et profite des performances de l'application.
Les développeurs d'applications de chat font appel à WebSocket lors d'échanges ponctuels, de publication, de diffusion de messages, etc. La communication est simple, légère et rapide puisque la même connexion WebSocket est utilisée pour envoyer ou recevoir des messages.
Lors du développement d'une application de jeu, le serveur doit recevoir des données en continu sans nécessiter une actualisation de l'interface utilisateur. WebSocket y parvient sans affecter l'interface utilisateur de l'application de jeu.
Étant donné que HTTP et WebSocket sont utilisés pour la communication des applications, les gens sont souvent confus et il est difficile de choisir l'un parmi l'autre.
Choix entre WebSocket et HTTP
WebSocket est un protocole cadre bidirectionnel. En revanche, HTTP est un protocole unidirectionnel qui fonctionne au-dessus du protocole TCP. Étant donné que le protocole WebSocket peut prendre en charge une transmission de données ininterrompue, il est principalement utilisé pour le développement d'applications en temps réel. HTTP est sans état et utilisé pour développer des applications RESTful et SOAP. SOAP peut toujours être implémenté à l'aide de HTTP, mais REST est largement répandu et utilisé.
Dans WebSocket, la communication se produit aux deux extrémités, ce qui en fait un protocole plus rapide. En HTTP, la connexion est établie à une extrémité, ce qui la rend un peu plus lente que WebSocket. WebSocket utilise une connexion TCP unifiée qui nécessite qu'une partie mette fin à la connexion. Jusqu'à ce que cela se produise, la connexion reste active. HTTP nécessite des connexions distinctes pour des requêtes distinctes. Une fois la demande terminée, la connexion est automatiquement déconnectée.
Longue interrogation HTTP
La demande de sécurité des données réseau est également plus importante aujourd'hui, et la connexion WebSocket utilise une connexion TCP standard, de sorte qu'elle peut être utilisée sur n'importe quel réseau prenant en charge TCP. Il utilise les préfixes de protocole ws:// et wss://, qui peuvent être combinés avec n'importe quel nom de domaine ou adresse IP.
Les connexions WebSocket peuvent être cryptées et le protocole TLS (Transport Layer Security) peut être utilisé pour protéger la sécurité des données. Cette connexion chiffrée utilise le préfixe de protocole wss://, par opposition au préfixe de protocole ws:// utilisé par les connexions non chiffrées. De plus, WebSocket prend également en charge le Secure Handshake Protocol (Secure Handshake Protocol), qui permet de crypter la communication entre le navigateur et le serveur. En général, WebSocket a une sécurité élevée et peut protéger la sécurité des données.
De plus, il convient de noter que WebSocket n'est pas un nouveau protocole basé sur HTTP, car WebSocket n'utilise HTTP que lors de l'établissement d'une connexion et n'a plus aucune relation avec HTTP une fois la mise à niveau terminée.