2010-10-30 27 views
2

我們正在開發一個在線實時網頁瀏覽器遊戲,我們選擇使用APE服務器。 我們有一個來自我們以前的項目的遊戲中的聊天系統,我們希望將它移植到APE。由於我們對APE有點新,我們不確定哪種情況會更好,或者可能根本無法工作。Ajax Push Engine(Comet)和持久聊天 - 如何實現?

現在聊天的工作方式如下: -the聊天有4間房間,用戶談一些特定的遊戲方面(貿易,戰鬥等) 當用戶完全重新加載頁面,他/她得到的最新消息30爲打開的聊天室形成db(數據庫) - 聊天正在發出週期性的AJAX請求,以查看任何聊天室是否有新消息,但實際的最新消息僅下載到當前打開的聊天室。 爲了讓事情變得更加複雜,我們將聊天分爲不同的語言 - 用戶只會收到其偏好Cookie中的語言信息。他們可以隨時更改,然後他們會收到其他語言的消息。

現在,我們正在轉向基於AJAX的完全無需重新加載頁面的系統,我們將自動最小化獲取最新30條消息的請求。

但最難的部分是 - 如何組織存儲消息在數據庫中並通過APE發送給用戶?

我們考慮了以下選項: - 用戶向PHP腳本發送消息,發送到db,然後PHP通過inlinepush將消息提交給APE(根據文檔,inlinepush只支持一個通道,我們不是確定它將如何工作),然後APE向所有用戶發送消息(看來,我們需要在APE服務器上存儲用戶首選語言,因此消息只發送給適當的用戶)。 - 用戶將消息發送給APE服務器,APE服務器將其發送給相同語言的其他用戶,並調用PHP腳本將消息存儲到數據庫; - 用戶將消息發送給APE服務器,APE服務器將其發送給相同語言的其他用戶,並使用APE自己的Mysql功能將消息存儲到db。

一方面,我們更喜歡通過PHP存儲數據,因爲我們有一個非常強大的數據庫訪問庫,並且我們希望避免將它移植到APE和Javascript來存儲聊天消息(並且我們也沒有經驗服務器端JS)。但是如果它會帶來一些好處,那麼我們當然會使用APE自己的Mysql。

此外,我們擔心,APE能否按照其語言過濾所有用戶,並只將消息發送給適當的用戶? APE如何處理Cookie?

此外,APE中基於子域的通道似乎有點難以設置,但我們還沒有找到更好的選擇。

回答

0

檢查此鏈接:

http://www.ape-project.org

這似乎是一個實現了AJAX PUSH發動機概念的一個開源項目。

他們爲您提供了代碼(服務器端和客戶端)。雖然它似乎沒有支持Windows,但我可以看到它,但它可能會幫助你,如果你需要它。

儘管答案似乎對發佈該問題的實際人員沒有用處,因爲這是一段很長的時間。

+0

是的,這是我在原帖中談到的APE。我們也嘗試過socket-io,但它有一些嚴重的錯誤和未實現的功能。我們最終使用node.js和Faye進行自定義身份驗證 - 並且它工作得很好。 Faye非常輕巧且可定製。 http://faye.jcoglan.com/ – JustAMartin 2012-09-03 08:30:54

0

我們結束了使用node.js和Faye的自定義身份驗證,它工作得很好。 Faye非常輕便且可定製,沒有複雜的域名設置麻煩。通過PHP編寫我們自己的SQL後端也相對容易。

Faye