2011-12-01 45 views
0

假設你有一個簡單的骰子游戲。它在網上播放。玩家1滾動,然後玩家2.需要有一些機制來通知玩家輪到他們。由於網絡無狀態,基於pull的性質,該解決方案似乎不如Windows應用程序明顯。觀察者模式可以用於在網絡上提供即時通知嗎?

  • 一種方法是定期輪詢服務器。 >,<

MS談到active MVC。本質上它是應用觀察者模式的MVC。所以,遊戲本身就是「主體」,玩家1,玩家2是觀察者。

觀察員可以用作網絡上即時通知的解決方案嗎?

回答

3

Here是技術很好的總結,以實現雙向通信:

  • 彗星
  • 長輪詢
  • 閃存
  • 網絡套接字
  • Java小程序
  • 瀏覽器插件
  • 外部應用程序
  • 其他方法:的ActiveX,Silverlight的,運行軌道

你說的沒錯,玩家會觀察遊戲狀態。長期持續的民意調查可以讓玩家知道是誰轉身,以及其他遊戲狀態信息。

+1

那麼,是的,但只有在這些機制之一的幫助下。 –

1

我們正在使用長時間等待的HTTP請求來獲得類似的功能。你做什麼是你做一個HTTP請求服務器與客戶端設置的超時超時(例如,10分鐘)。在服務器處理程序中,您可以在事件觸發的某個同步對象上執行WaitOne(serverTimeout),並稍微縮短超時時間(8分鐘) - 並在發生事件或超時過期時立即返回答案。

使用AsyncController進行此類查詢很方便。