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中基于子域的渠道设置似乎有点尴尬,但我们还没有找到更好的替代方案。
没有找到相关结果
已邀请:
2 个回复
拭十年
郡豪靠暖