Modèle d'observateur sur HTTP et TCP / IP (serveur-client)

9

J'ai un serveur et de nombreux clients (environ 50 clients) qui se connectent à ce serveur sur la base d'une application Web, qui est bien sûr basée sur le protocole HTTP, qui à son tour utilise TCP / IP (corrigez-moi si je me trompe, car je ne suis pas vraiment bon en réseautage).

Le problème est que je devrais développer un mécanisme d'alerte dans lequel, lorsque quelqu'un soumet un formulaire avec des valeurs dangereuses, le manager (qui est également connecté via la même application web) devrait recevoir une alerte pop-up sur son écran, presque réelle -heure (instantanément).

Cependant, comme le protocole HTTP est sans état, je suis un peu perplexe ici. Je ne sais pas comment je peux implémenter cela.

Une des solutions pourrait être d'utiliser JavaScript avec la setInterval()fonction pour extraire des données chaque seconde du serveur. Mais cela me semble un peu sale et peu professionnel.

Avez-vous une idée d'implémenter une autre solution?

Saeed Neamati
la source
Ce message peut aider stackoverflow.com/questions/640488/…
NoChance
Quel genre de clients? Clients légers (basés sur un navigateur) ou clients lourds?
ysdx
@ysdx, pensez aux clients. Clients avec prise en charge du navigateur uniquement.
Saeed Neamati

Réponses:

4

Vous devez utiliser une sorte de push ajax (voir Comet ) pour informer les clients. Il peut éliminer le besoin d'interrogation, vous gardez essentiellement une connexion établie ouverte qui peut être utilisée pour notifier le navigateur des événements qui se produisent. Cependant, cela ne fonctionne pas avec tous les navigateurs. Dans de tels cas, vous retombez dans le "long sondage".

Faucon
la source
6

Je pense que c'est le genre de raison pour laquelle les WebSockets ont été créés. Si vous n'avez pas besoin de compatibilité avec les anciens navigateurs, vous souhaiterez peut-être l'utiliser au lieu d'interroger. Vous devriez probablement utiliser le sondage comme solution de rechange de toute façon.

Je ne suis pas sûr de la stabilité des spécifications / implémentations ces jours-ci (ce n'était pas très stable il n'y a pas si longtemps). Il semble que la dernière spécification soit implémentée dans Firefox 6 et Chromium 14.

ysdx
la source