2011-07-06 78 views
0

我們目前正在開發面向Facebook的小規模獨立紙牌遊戲,我們希望將達到數十萬玩家(最終)。Facebook的Flash遊戲客戶端 - 服務器通信

我們已經弄清了大部分問題(可擴展性,服務器端架構等) - 然而一個問題 - 客戶端服務器之間的通信。

我們有以下要求:

  • 服務器端推送消息(無客戶端消息請求)
  • 高擴展性(應在第一數百支持,後來希望上千個CCU)的
  • 安全,可靠層
  • 工作以及與大多數計算機,路由器&瀏覽器
  • 作品在Adobe Flash/AS3

首先想到的是套接字連接,但我想知道,是否有更好的解決方案可以滿足我們的需求?

謝謝!

回答

1

套接字連接幾乎是不可避免的(請參閱transport layers)。

一個好主意是使用TCP:它保證交付(高可靠性),它是「連接」的方向。有一些缺點,但其他替代方案在大多數計算機,路由器和瀏覽器上都不可用。

更重要的問題是:你打算通過TCP發送什麼?通常,使用可用於Flash和您的服務器的東西是一個好主意(例如,請參閱Remote Procedure Call)。

「推送」消息通常只是HTTP連接的問題,因爲它旨在處理同步請求。但是,在Flash中,您沒有此限制。

可以通過「包裝」TCP連接來添加安全性:使用SSL或TLS。

  • XML序列化(XML-RPC):易於開發和維護,性能適中,可能可靠。
  • RTMP(Real Time Messaging Protocol):原生Flash,性能優秀,適用於實時遊戲,可以通過HTTP隧道傳輸(超過任何防火牆/路由器)。

請參閱NetConnection類,和Action Message Format

Adob​​e Integrated Runtime和Adobe Flash Player使用AMF在應用程序和遠程服務器之間進行通信。 AMF將遠程過程調用(RPC)編碼爲可通過HTTP/HTTPS或RTMP/RTMPS協議傳輸的緊湊二進制表示形式。對象和數據值被序列化爲這種二進制格式,這提高了性能,允許應用程序加載數據的速度比基於文本的格式(如XML或SOAP)快10倍。

(從http://www.pyamf.org/

1

我們使用我們的Flash遊戲WebORB爲comunicating服務器端和客戶方,但我不知道這是足以讓你的要求。

對不起,如果我想念理解。

+0

請注意,WebORB在引擎蓋下使用AMF。 – Pindatjuh