2012-05-04 166 views
1

我正在開發一款多人遊戲,這將是一個Facebook應用程序。做了一些研究,我發現對於服務器端推送,我需要最好在Node.js或Python中實現的彗星。Facebook中的多人遊戲

但Facebook的API只能用JavaScript和PHP編寫。我知道有第三方API,但我不想和他們一起去。我可以在JavaScript中做所有的Facebook代碼客戶端,但是這會有點困難,尤其是當它在PHP中很容易做到時。

據我,我的選擇是概述如下

  1. 離開服務器端的推送和定期Ajax請求+ PHP堅持。

  2. 堅持Node.js並離開PHP,並在JavaScript中做所有的FB編程(如果這甚至可能,我認爲是這樣)。

  3. 使用服務器端推動Apache(我聽說這不是一個好的方法)。

  4. 使用像Java這樣的技術來支持一些彗星和FB API。 (我不知道Pyhton)。

  5. HTML5也引入了服務器端更新,也許它可以提供幫助。 (雖然沒有給它太多的想法)

這是最好的方式去?我對Java,PHP和javascript有很好的經驗。

+0

[如何用PHP實現COMET](http://www.zeitoun.net/articles/comet_and_php/start) –

回答

2

所有彗星都是一個普通的HTTP ajax請求,如果沒有結果,服務器有意延遲響應,並且繼續輪詢數據源服務器端,直到出現結果或請求超時。如果重要事件相當稀少(即,如果在沒有更新的情況下連續出現多次秒),則這是推送技術的一個很好的近似。

我不認爲PHP是一般的偉大語言,但在PHP中使用彗星(也稱爲長輪詢)不應該比在Python等中更難。因此,如果你沒有任何其他語言不使用PHP的原因,然後去做。您還應該能夠從Python或Javascript/Node.js等其他語言與Facebook的API進行交互,而不會有太多麻煩。

除了別的以外,HTML5還有web套接字,這些套接字與HTTP請求完全不同,比長查詢技術有更好的延遲,特別是對於非常頻繁的更新。 Web套接字數據更接近您可能想象的「推」技術手段 - 彗星實際上僅僅是通過延遲拉來實現的「推」的近似值。無論是套接字還是彗星,或只是普通的非延遲Ajax請求最適合您的遊戲,完全取決於遊戲的具體細節和服務器資源。