0

まず、標準のASP.NET Webサイトを使用してクライアント/サーバーソリューションのようなものを作成しています。この方法は推奨されていません。ほとんどの人が "COMET!"または "HTML5ソケット!" - しかし、しないでください;-)!私がやっている何アプリケーションスコープから複数のクライアントへのイベント?

...

は、私がウェブサイト上でMMORPGを作成しています。

私は、同時に連絡が必要な複数のクライアントを持っています。これは、アプリケーションスコープ内のグローバルオブジェクトによって行われます。

私の問題

私はいくつかのクライアントにイベントを起動する必要があります。たとえば、攻撃が行われたときに、私はいくつかのグラフィックスを更新する必要があります。攻撃ロジックはグローバルオブジェクトで解決されますが、各クライアントはこれに応答する必要があります。

今、私は次のようにします。

fightTrace.Reciever.InvokeMoveEnded(this); 
    fightTrace.FiredBy.InvokeMoveEnded(this); 

(これは、オブザーバーパターンの一種である)

今何happendsは競合状態です。 page_loadイベントをロードするユーザーは、これらのイベントの両方を取得し、実行していないユーザーは、UIに変更を加えません。

私は本当に欲しいですか?

私が実際に必要とするのは、アプリケーション状態を通じてオブザーバーパターンを作成するためのいくつかの本物の素晴らしい方法です。この場合はクライアントであるすべての「リスナー」にイベントを送信してから、更新を行う必要があります。

これを行う1つの方法は、真実/偽のセッションのものです。しかし、私は本当に良い方法が好きです!

ありがとうございます!

答えて

0

あなたのコンテキストを正しく理解していれば、アプリケーション状態オブジェクトの状態が変更されるたびにアプリケーションのすべてのクライアントを同期したいと思うでしょう。ここで忘れているのは、HTTPプロトコルのステートレスな動作です。応答が送信されると、接続が失われ、再びHTTP要求を送信して再度配信する必要があります。しかし、状態管理とAjaxベースの短時間でタイムリーなアップデートを使用して、接続環境をシミュレートすることで、何かをエミュレートすることができます。しかし、私はあなたが聞きたくない言葉を発する必要があります。お勧めしません。

代わりに、アプリケーションオブジェクトの状態を保存し、要求が来たら、オブジェクトの更新された状態に基づいて応答を提供することができます。クライアントが要求をどのように開始しなければならないか。

関連する問題