WebSocket est l’un des protocoles de communication utilisés sur Internet. Il permet une communication bidirectionnelle entre les serveurs web et les clients. Ce protocole est défini par l’Internet Engineering Task Force (IETF) dans la « RFC 6455 ».

Le Web a été initialement conçu pour prendre en charge l’hypertexte, mais il a depuis évolué afin de permettre la création d’applications web plus dynamiques. Pour y parvenir, une technique couramment utilisée est AJAX (JavaScript asynchrone et XML), qui s’appuie sur XMLHttpRequest pour permettre des échanges de données précis avec les serveurs web, plutôt que des mises à jour de pages entières. L’expérience utilisateur gagne ainsi en réactivité. Toutefois, avec AJAX, tous les échanges de données doivent être initiés côté client, ce qui complique l’envoi proactif de données aux clients par le serveur web.

Pour remédier à cette limitation, Comet a été développé comme une extension d’AJAX. Comet consiste à « créer intentionnellement des requêtes dont les réponses sont différées », en maintenant ouverte la connexion HTTP au serveur web afin que celui-ci puisse envoyer des réponses dès qu’il souhaite transmettre des informations. Cependant, Comet présente l’inconvénient de consommer beaucoup de ressources.

WebSocket a été développé pour améliorer Comet et est disponible en HTML5. Il maintient ouverte une connexion entre le serveur et le client, permettant ainsi une communication bidirectionnelle continue via cette connexion. Aujourd’hui, les principaux navigateurs prennent en charge WebSocket.

Une connexion WebSocket est établie via HTTP à l’aide du champ d’en-tête HTTP « Upgrade », qui permet de convertir la connexion en connexion WebSocket. Notez que si un site web utilise un proxy HTTP qui ne prend pas en charge WebSocket, la connexion ou la communication peut échouer. Une configuration appropriée est donc nécessaire.