我们正在开发一个在线实时网络浏览器游戏,我们选择使用APE服务器。 我们之前的项目有一个游戏内聊天系统,我们希望将它移植到APE。由于我们对APE有点新,我们不确定哪种情况会更好或者可能根本不起作用。
现在聊天的工作方式如下: - 聊天有4个房间,用户谈论某些游戏方面(交易,战斗等) 当用户完全重新加载页面时,他/她从已打开的聊天室获取最新的30条消息(数据库) - 聊天是定期发出AJAX请求,以查看任何聊天室中是否有新消息,但仅为当前打开的聊天室下载实际的最新消息。 为了使事情变得更加复杂,我们将聊天分离为单独的语言 - 用户只能获取其首选cookie中的语言的消息。他们可以随时更改它,然后他们会收到其他语言的消息。
现在我们正在转向完全没有页面重新加载的完全基于AJAX的系统,我们将自动最小化从db获取最新30条消息的请求。
但困难的是 - 如何组织在db中存储消息并通过APE发送给用户?
我们考虑了以下选项: - 用户向PHP脚本发送消息,然后转到db,然后PHP通过inlinepush将消息提交给APE(根据文档,inlinepush仅支持一个通道,我们不确定它将如何工作)然后APE正在发送给所有用户的消息(似乎我们需要在APE服务器上存储用户首选语言,因此消息只发送给适当的用户); - 用户将消息发送到APE服务器,APE服务器将其传递给同一语言的其他用户,并调用PHP脚本将消息存储到db; - 用户将消息发送到APE服务器,APE服务器将其传递给同一语言的其他用户,并使用APE自己的Mysql功能将消息存储到db。
一方面,我们更喜欢通过PHP存储数据,因为我们有一个非常强大的数据库访问库,我们希望避免将其移植到APE和Javascript只是为了存储聊天消息(而且我们也没有使用服务器的经验) -side JS)。但是如果它会带来一些好处,那么我们当然会使用APE自己的Mysql。
我们也很担心,APE能否按照他们的语言过滤所有用户,并仅将消息发送给相应的用户? APE如何处理cookie?
APE中基于子域的通道设置似乎有点尴尬,但我们还没有找到更好的选择。
答案 0 :(得分:0)
检查此链接:
它似乎是一个实现AJAX PUSH ENGINE概念的开源项目。
他们为您提供了代码(服务器端和客户端)。虽然它似乎不支持Windows实际上我正在研究的内容,但如果你需要它可能对你有帮助。
虽然答案似乎对发布问题的实际人没用,但这是很长时间。
答案 1 :(得分:0)
我们最终使用node.js和Faye进行自定义身份验证,它运行得很好。 Faye非常轻巧,可定制,没有复杂的域设置麻烦。通过PHP编写我们自己的SQL后端也相对容易。