Beobachtermuster über HTTP und TCP / IP (Server-Client)

9

Ich habe einen Server und viele Clients (ca. 50 Clients), die über eine Webanwendung, die natürlich auf dem HTTP-Protokoll basiert, das wiederum TCP / IP verwendet, eine Verbindung zu diesem Server herstellen (korrigieren Sie mich, wenn ich falsch liege, weil ich bin nicht wirklich gut im Networking).

Das Problem ist, dass ich einen Warnmechanismus entwickeln sollte, bei dem der Manager (der auch über dieselbe Webanwendung verbunden ist) ein Alarm-Popup auf seinem Bildschirm erhält, wenn jemand ein Formular mit gefährlichen Werten einreicht -Zeit (sofort).

Da das HTTP-Protokoll jedoch zustandslos ist, bin ich hier ein wenig verwirrt. Ich weiß nicht, wie ich das umsetzen kann.

Eine der Lösungen könnte JavaScript neben verwendet setInterval()Funktion zu ziehen Daten pro Sekunde vom Server. Aber das scheint mir ein bisschen schmutzig und unprofessionell.

Habt ihr eine Idee, eine andere Lösung zu implementieren?

Saeed Neamati
quelle
Dieser Beitrag kann stackoverflow.com/questions/640488/…
NoChance
Welche Art von Kunden? Dünne (browserbasierte) Clients oder schwere Clients?
Ysdx
@ysdx, denke Kunden. Clients nur mit Browserunterstützung.
Saeed Neamati

Antworten:

4

Sie sollten eine Art Ajax-Push verwenden (siehe Comet ), um die Clients zu benachrichtigen. Es kann die Notwendigkeit von Abfragen beseitigen. Sie halten im Grunde eine hergestellte Verbindung offen, mit der der Browser über auftretende Ereignisse informiert werden kann. Dies funktioniert jedoch nicht mit allen Browsern. In solchen Fällen greifen Sie auf "lange Abfragen" zurück.

Falke
quelle
6

Ich denke, dies ist der Grund, warum WebSockets erstellt wurden. Wenn Sie keine Kompatibilität mit älteren Browsern benötigen, möchten Sie diese möglicherweise anstelle einer Abfrage verwenden. Sie sollten Polling wahrscheinlich sowieso als Fallback verwenden.

Ich bin mir nicht sicher, wie stabil die Spezifikationen / Implementierungen heutzutage sind (es war vor nicht allzu langer Zeit nicht sehr stabil). Es scheint, dass die neueste Spezifikation in Firefox 6 und Chromium 14 implementiert ist.

ysdx
quelle