J'ajouterais seulement une perspective plus élevée à ce qui a été dit, à savoir que l'ESS est un modèle de publication-abonnement par opposition à l'interrogation constante dans le cas d'AJAX.
En général, les deux méthodes (polling et publish-subscribe) tentent de résoudre le problème du maintien d'un état à jour sur le client.
1) Modèle de scrutin
Le principe est simple. Le client (navigateur) reçoit d'abord un état initial (page) et pour qu'il soit mis à jour, il doit périodiquement demander l'état (page ou sa partie) et traiter le résultat dans l'état actuel (rafraîchir la page entière ou la rendre intelligemment dans sa partie en cas d'AJAX).
Naturellement, un inconvénient est que si rien ne se passe avec l'état du serveur, les ressources (CPU, réseau, ...) sont utilisées inutilement. Un autre inconvénient est que même si l'état change, les clients ne l'obtiennent qu'à la période d'interrogation suivante, et non pas immédiatement. Il est souvent nécessaire d'évaluer un bon compromis entre les deux.
Un autre exemple de polling est un spinwait dans le threading.
2) Modèle de publication et d'abonnement
Il fonctionne comme suit :
- (le client demande d'abord et montre un certain état initial)
- le client s'abonne au serveur (il envoie une requête, éventuellement accompagnée d'un contexte tel que la source de l'événement).
- le serveur marque la référence au client à certains de ses référentiels de référence client
- dans le cas d'une mise à jour de l'état, le serveur envoie une notification au client sur la base de la référence au client qu'il détient ; c'est-à-dire qu'il ne s'agit pas d'une réponse à une demande mais d'un message initié par le serveur.
- les bons clients se désabonnent lorsqu'ils ne sont plus intéressés par les notifications
Il s'agit de l'ESS ou, dans le cadre d'un threading, d'un événement à attendre, comme autre exemple. L'inconvénient naturel, comme indiqué, est que le serveur doit connaître tous ses clients abonnés, ce qui, selon l'implémentation, peut poser problème.