Appearance
WebSocket
Principe
WebSocket est un protocole qui se repose aussi sur le protocole TCP, tout comme le protocole HTTP.
Néanmoins, à l'inverse du protocole HTTP qui hérite de tout un ensemble de structure rigide et dédié pour le monde du Web classique, le protocole WebSocket est dédié au monde du Web Temps Réel, pour les applications riches, interactives et dont les interactions se font de manière instantannée, c'est le cas par exemple des chat en ligne, des jeux-vidéos, des visualisations de données en temps réel, etc...
Avantage
L'avantage principale du protocole WebSocket par rapport au protocole HTTP est qu'il n'a pas de surcharge liée à des informations qui ne seraient pas utiles dans le cadre d'une application temps réelle comme la distinction entre une requête et une réponse, puisque dans le cadre d'une application en temps réel, nous souhaitons particulièrement que les échanges se fassent dans les deux sens.
Le protocole supporte également des échanges sécurisés au sein du protocole lui-même, indépendamment du protocole SSL qui est aussi utilisé par le protocole WebSocket pour sécuriser les échanges.
Inconvénient
L'inconvénient majeur et indéniable est qu'il reste un protocole à part entière, qui nécessite d'être supporté par le langage de programmation sur lequel il est utilisé, et il n'est pas trivial du tout à implémenter puisqu'il correspond à la RFC6455.
Il existe néanmoins des librairies, dont la très populaire Socket IO pour la plateforme Node.js par exemple, ou Gorilla pour Go. Néanmoins tous les langages de programmation n'implémente pas forcément le protocole WebSocket, et toutes les plateformes n'implémente pas le protocole dans leurs librairies, donc il est important de vérifier le support de ce dernier.
Bon à savoir
La plateforme Deno, alternative à Node.js, supporte le protocole WebSocket nativement, et il est possible d'utiliser l'API Web WebSocket pour pouvoir communiquer directement avec un serveur, ce qui permet une implémentation très rapide des WebSocket sur un projet Deno.