0

首先,我使用標準的ASP.NET網站創建了一個類似於客戶端/服務器解決方案的東西 - 我知道這種方法沒有提供建議,大多數人都喜歡尖叫「COMET!」或「HTML5套接字!」 - 但請不要;-)!通過應用程序範圍的事件到多個客戶端?

我在做什麼...

我創建一個網站上的MMORPG。

我有幾個客戶需要同時聯繫。這由應用程序範圍中的全局對象完成。

我的問題

我需要調用一個事件來幾個客戶。例如,當執行攻擊時,我需要更新一些圖形。攻擊邏輯在全局對象中解析,但每個客戶端都必須對此做出響應。

現在我做到以下幾點:

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

(這是一種觀察者模式)

什麼現在happends是一個競爭條件。加載page_load事件的人將獲得這兩個事件,而沒有運行這些事件的人將不會在UI中發生任何更改。

那麼,我真的想要什麼?

我真正需要的是通過應用程序狀態創建觀察者模式的一些真實而好的方法。我需要向每個「偵聽器」發送一個事件,在這種情況下,這是一個客戶端,然後進行一些更新。

做到這一點的一種方法是一些會話事情,與真/假..但我真的很喜歡一些更好的方式!

謝謝!

回答

0

如果我正確理解了您的上下文,那麼無論何時應用程序狀態對象的狀態發生更改,您都希望同步應用程序的所有客戶端。你在這裏遺忘的是HTTP協議的無狀態行爲。一旦發送響應,連接就會丟失,您需要再次發送HTTP請求以再次提供服務。不過,您可以使用狀態管理和基於Ajax的短時間更新來模擬某些事情,以模擬連接的環境。不過,我要說出你不想聽的話。不建議。

取而代之,您可以做的是保存應用程序對象的狀態,並且每當請求到來時都會根據對象的更新狀態提供響應。任何客戶如何發起請求。

相關問題