2012-02-24 28 views
0

我正在與我的兄弟製作此卡片遊戲,以便我的家人遠程播放。這有點像Windows中的心。讓我們假設它是心,這樣我就不必解釋遊戲的無聊規則。當另一個用戶撥打電話時,服務器「通知」Web服務呼叫者

會有3名或更多玩家,每個玩家在他們輪到的時候都會將一張牌扔到地板上。

我有一個數據庫和一個類庫的業務邏輯和讀取/寫入數據庫。

現在我有幾個功能:

  • 新遊戲
  • 添加球員
  • 開始遊戲
  • 檢查遊戲狀態 =>返回什麼在地板上,來電者手上有什麼牌,對手有多少張牌,誰的牌回頭是誰,誰是主人等
  • 進行移動 =>用戶通知服務器他希望使用某張卡片。

我有一個Web服務,它使用類庫和WebMethods來調用每個函數。網頁/獨立的exes可以直接使用類庫或調用Web服務來使用該函數。

我很努力想出一個設計來「通知」其他用戶,其他玩家已經執行了一個動作。我已經想到了可能的邏輯:每x秒

  • 呼叫檢查遊戲狀態,看看事情
  • 調用Web方法「讓我知道如果事情發生了變化」與回調函數是異步的。
    • 如果超時會怎麼樣?
    • 如果用戶離開遊戲中間該怎麼辦?

請幫我一把。

+1

的如果你正在編寫新的代碼,那麼你不應該使用ASMX服務。您應該使用WCF來代替。在許多其他功能中,WCF通過雙工通信通道支持點對點和通知。 – 2012-02-24 19:18:14

+0

回想起來,這個簡單的建議幫了我很多。 – ToBeDeleted 2017-07-21 22:17:03

回答

0

只要沒有大量的客戶端,輪詢服務就可以接受。另外,每個客戶端都可以向WS發送「心跳」信號以指示「是的,我還連接着」。以這種方式,您可以檢測斷開的客戶端。

如果你不喜歡輪詢,你可以看看推送通知:http://msdn.microsoft.com/en-us/library/windows/apps/hh465460.aspx