2014-07-27 11 views
2

我要創建一個遊戲。 起初它將是瀏覽器遊戲。 後來它會是APP(Android,iPhone遊戲)。哪種技術最好立即向客戶通知服務器事件?

在服務器端我使用nginx,apache,php。

=================

我需要告知網遊玩家對不同事件。 例如:一個用戶被另一個用戶攻擊。我應該立即通知他。

古典AJAX不能在那裏出錯。我讀過一些關於彗星,網絡套接字和其他一些技術的內容。 但我仍然無法理解,哪種解決方案對我來說是最好的? 請幫我做決定。

回答

0

也許你可以嘗試Server Sent Events。

使用SSE,將維持一個常數連接,直到頁面被卸載,如果連接出現問題或手動關閉連接。每當發生某些事情時,例如,一名玩家正在遭到攻擊,您會發送一個event命令給客戶端,客戶端然後根據事件數據採取行動。

雖然它沒有在每一個瀏覽器中運行的是,它是一個技術,你可以嘗試

http://www.html5rocks.com/en/tutorials/eventsource/basics/給出了SSE一些進一步的解釋,並就如何設置它

+0

SSE不受任何版本的Internet Explorer支持 – vtortola

+0

我意識到這一點。在IE中,可以使用longpolling。長時間的連接會一直持續到事件發生。然後關閉連接,並重新打開新連接 – brilletjuh

0

圍棋與WebSocket的兼容。使用此功能,您可以同時處理從客戶端瀏覽器發送到服務器的數據(例如「用戶A攻擊用戶B」)以及通過單個通道從服務器發送的數據。這樣可以節省服務器資源 - 並且擁有單一技術比兩個單獨的技術(AJAX +反向信道的東西)要好。

此外,還有用於Android和iOS的WebSocket庫,因此您可以在未來附加本地客戶端。

因爲您需要一次將事件分發給多個客戶端,所以使用諸如Publish &之類的內容在WebSocket上訂閱是有道理的。

我建議看看Crossbar.io - 這是一個開源應用程序路由器,它發佈&訂閱開箱即用。

完全披露:我爲Crossbar.io開源項目的創始人Tavendo工作。