Ajax Push Engine(Comet)和持久聊天 - 如何实现?

我们正在开发一个在线实时网络浏览器游戏,我们选择使用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只是为了存储聊天消息(我们也没有使用服务器端JS的经验) )。但如果它会带来一些好处,那么我们当然会使用APE自己的Mysql。 我们也担心,APE能否按照他们的语言过滤所有用户,并仅将消息发送给适当的用户? APE如何处理cookie? 此外,APE中基于子域的渠道设置似乎有点尴尬,但我们还没有找到更好的替代方案。     
已邀请:
检查此链接: http://www.ape-project.org 它似乎是一个实现AJAX PUSH ENGINE概念的开源项目。 他们为您提供了代码(服务器端和客户端)。虽然它似乎不支持Windows我实际上正在研究但它可能会帮助你,如果你需要它。 虽然答案似乎对发布问题的实际人没有用,但这是一段很长的时间。     
我们最终使用node.js和Faye进行自定义身份验证,它运行得很好。 Faye非常轻巧,可定制,没有复杂的域设置麻烦。通过PHP编写我们自己的SQL后端也相对容易。 王菲     

要回复问题请先登录注册