2

我们正在开发一款在线实时网页浏览器游戏,我们选择使用 APE Server。我们有一个来自我们之前项目的游戏内聊天系统,我们希望将其移植到 APE。由于我们对 APE 有点陌生,我们不确定哪种方案会更好,或者可能根本不适用。

现在聊天的工作方式如下: - 聊天有 4 个房间,用户在其中谈论某些特定的游戏方面(贸易、战斗等),当用户完全重新加载页面时,他/她会从 db(数据库)获取最新的 30 条消息已打开的聊天室 - 聊天室定期发出 AJAX 请求以查看任何聊天室中是否有新消息,但实际最新消息仅下载当前打开的聊天室。为了让事情变得更加复杂,我们将聊天分成不同的语言 - 用户只收到他们偏好 cookie 中语言的消息。他们可以随时更改它,然后他们会收到其他语言的消息。

现在我们正在转向完全基于 AJAX 的系统,根本不需要重新加载页面,我们将自动最小化请求以从 db.xml 获取最新的 30 条消息。

但困难的部分是 - 如何组织将消息存储在数据库中并通过 APE 发送给用户?

我们考虑了以下选项: - 用户向 PHP 脚本发送消息,它转到 db,然后 PHP 通过 inlinepush 将消息提交给 APE(根据文档,inlinepush 仅支持一个通道,我们不确定它将如何工作然后)然后 APE 将消息发送给所有用户(看起来,我们需要在 APE 服务器上存储用户首选语言,因此消息只发送给适当的用户);- 用户将消息发送到APE Server,APE Server将消息传递给其他同种语言的用户,同时调用PHP脚本将消息存储到db;- 用户将消息发送到APE Server,APE Server 将消息传递给相同语言的其他用户,并使用APE 自己的Mysql 能力将消息存储到db。

一方面,我们更喜欢通过 PHP 存储数据,因为我们有一个非常强大的数据库访问库,并且我们希望避免将其移植到 APE 和 Javascript 来存储聊天消息(而且我们也没有使用服务器端 JS 的经验)。但是如果它会带来一些好的优势,那么我们当然会使用APE自己的Mysql。

我们也担心,APE 是否能够按用户的语言过滤所有用户并仅将消息发送给适当的用户?APE 如何处理 cookie?

此外,APE 中基于子域的频道设置起来似乎有点尴尬,但我们还没有找到更好的选择。

4

2 回答 2

0

我们最终使用了带有自定义身份验证的 node.js 和 Faye,它工作得很好。Faye 非常轻巧且可定制,无需复杂的域设置。通过 PHP 编写我们自己的 SQL 后端也相对容易。

法耶

于 2012-09-03T08:34:52.403 回答
0

检查此链接:

http://www.ape-project.org

它似乎是一个实现 AJAX PUSH ENGINE 概念的开源项目。

他们为您提供了代码(服务器端和客户端)。尽管它似乎不支持我实际研究的 Windows,但如果您需要它可能会对您有所帮助。

虽然答案似乎对发布问题的实际人没有用,因为它已经很长时间了。

于 2012-09-03T06:23:28.560 回答