WebSocket API & Protocole

L'overhead

HTTP, quelques rustines

HTTP n'étant pas adapté aux communications temps réel, quelques techniques qui détournent l'utilsation du protocole ont été proposées.
Elles sont pour la plupart issues de la technologie AJAX et reposent donc sur l'utilsation de requêtes asynchrones.
Pour citer les principales:



Un schéma qui présente le fonctionnement du polling:

Polling


En fait des requêtes asynchrones sont émises toutes les n secondes. Les réponses à ces requêtes de la part du serveur vont donner l'impression
d'un pseudo temps réel.

Overhead

Les techniques présentées ci dessus sont efficaces dans le sens où elles permettent des mises à jour de la page avec l'impression d'une communication temps réel. Mais elles posent aussi des problèmes. Déjà ce ne sont pas technologies standards puisque le protocole HTTP est détourné de son usage habituel.
Puis elles vont poser des problèmes d'overhead.

Dans notre cas une communication temps réel avec HTTP demande des mises à jour constantes, celà implique une multiplication des requêtes et des réponses.
Les entêtes HTTP dans certains cas peuvent être de 1 à 2 kilo octets, une partie non négligeable de la bande passante sera alors dédiée aux entêtes.

Nous allons appuyer ces propos par un exemple très simple:

On imagine un polling vers 100000 clients toutes les 200 ms.
La taille moyenne des entêtes est de 500 octets.
Le calcul : (100000*0,5Ko*2)/0,02 = 5Mo/s de bande passante juste pour les en-têtes

La solution alors est de ne plus utiliser HTTP pour ce type de communication mais plutôt d'utiliser un protocole adapté.