Archives du tag : polling

La solution du server push : « connection refresh »

Le protocole TCP/IP s’assure, entre autre, du bon transport d’une information (un ensemble de paquets  IP) d’un point A au point B (rapide résumé de ce qui nous intéresse sur ce protocole). Cette traversé, si on peut l’appeler comme ça, est composée d’une multitude d’obstacles comme par exemple des routeurs, des firewall, des proxy, des VLAN, etc. Chaque élément est soumis à des contraintes physiques (avoir un temps de réponse acceptable), des contraintes de sécurité et des contraintes de bon fonctionnement (ne pas altérer l’intégrité des données).

Connection refresh : la solution du server push

L’alternative du « Polling » (en français scrutation)

Définition:

Vérification répétitive et automatique de l’état d’un ou plusieurs éléments d’un système pour y détecter un changement. (source: wikipedia).

Détaillons ce que cela signifie:
Exemple: un client tchate sur une application web, il demande à récupérer la ligne 200 de sa discussion (la dernière ligne écrite lue est donc 199). Pour cela, il fait une requête au serveur du style:

http://mon.chat.app/getChatLine?idx=200

Si la ligne n’existe pas (parce que personne n’a envoyé de message), le serveur répond simplement  « n’existe pas ». Le client doit donc relancer la même requête 1 ou 2 secondes plus tard pour obtenir les nouveaux messages et cela tout le temps. C’est le principe du polling (traduit en français par « interroger » ou « scruter »).

Il a deux problèmes majeurs à cette technique:

Inefficace: si l’application interroge le serveur toutes les secondes pour savoir s’il y a eu une nouvelle ligne et que la discussion a en moyenne un nouveau message toutes les 30 secondes, alors 29 des 30 requêtes contiendront « n’existe pas ». Rappelons également que pour une requête échangée, le client et le serveur consomme plusieurs kilo-octets de contenus et d’entêtes HTTP. Le ratio entre l’information utile et l’information consommée (utile+transport) est très mauvais.  Bref, c’est une utilisation totalement inefficace de la bande passante.

Lent: imaginez un moment que l’un de vos interlocuteurs vous envoie quelque chose juste après avoir reçu la notification « n’existe pas ». Dans ce cas, vous serez obligé d’attendre 1 ou 2 secondes pour voir le message (ça dépend comment on règle le polling). En conclusion, c’est lent.

Le Push Server évite ce genre de problèmes. C’est pour cela qu’il est bien plus avancé et efficace que la technique de polling. Dans la pratique, le Server Push reste lié au principe de polling, mais on l’appelle également long polling.

Romain LAFOND