Frage

Zunächst einmal schreibe ich mit einer Standard-ASP.NET-Website ein so ähnliches - ich weiß, dass diese Methode nicht berühmt ist, und die meisten Leute würden gerne "comet!" oder "HTML5-Sockel!" - aber bitte nicht ;-)!

was ich tue ...

Ich erstellung ein MMORPG auf einer Website.

Ich habe mehrere Kunden, die gleichzeitig in Kontakt sein müssen. Dies erfolgt durch ein globales Objekt im Anwendungsbereich.

mein problem

Ich muss ein Ereignis an mehrere Clients aufrufen. Wenn zum Beispiel ein Angriff ausgeführt wurde, muss ich einige Grafiken aktualisieren. Die Angriffslogik ist im globalen Objekt aufgelöst, aber jeder der Clients muss darauf reagieren.

jetzt mache ich folgendes: generasacodicetagpre.

(Dies ist eine Art Beobachtermuster)

Was jetzt passiert, ist ein Rennzustand. Derjenige, der das Page_Load-Event lädt, erhält beide Ereignisse, und derjenige, der sie nicht läuft, erleben keine Änderungen in der Benutzeroberfläche.

Also, was will ich wirklich?

Was ich wirklich brauche, ist ein echter und schöner Weg, um ein Beobachtermuster durch den Anwendungszustand zu erstellen. Ich muss ein Ereignis an jeden "Listener" senden, der in diesem Fall ein Client ist, und dann ein Aktualisieren.

Eine Möglichkeit, dies zu tun, ist etwas Session-Ding, mit wahr / falsch .. aber ich würde wirklich etwas bessere Weise mögen!

danke!

War es hilfreich?

Lösung

Wenn ich Ihren Kontext richtig verstanden habe, wann immer der Status Ihres Anwendungsstatusobjekts geändert wird, möchten Sie alle Clients Ihrer Anwendungen synchronisieren.Was Sie hier vergessen, ist das statlose Verhalten des HTTP-Protokolls.Sobald eine Antwort gesendet wird, geht die Verbindung verloren, Sie müssen erneut eine HTTP-Anforderung senden, die erneut serviert wird.Sie können jedoch etwas unter Verwendung von staatlichen Management- und AJAX-basierten kurzen und zeitnahen Updates nachahmen, um eine angeschlossene Umgebung zu simulieren.Ich habe jedoch die Worte aussprechen, die Sie nicht hören möchten.Nicht empfohlen.

stattdessen, was Sie tun können, ist, den Status des Anwendungsobjekts zu speichern, und wann immer eine Anforderung erfüllt, basierend auf dem aktualisierten Status Ihres Objekts.Wie ein Kunde muss eine Anfrage einleiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top