XMPP 多 MUC Web 应用程序操作指南

Posted

技术标签:

【中文标题】XMPP 多 MUC Web 应用程序操作指南【英文标题】:XMPP Multiple MUC Web Application How-To 【发布时间】:2011-04-18 12:03:01 【问题描述】:

我正在设计一个需要支持数千(甚至数万)最终用户的网络游戏。 * 客户端是基于浏览器的。 * 服务器端“引擎”将基于具有 MUC 功能的 XMPP。 * 游戏由许多场景(数十到数百个)组成,最终用户(玩家)加入其中以参与该场景。 * 每个场景都必须有一个独特的“机器人”来控制流程。例如:玩家 X 向玩家 Y 施法:机器人在房间的其余部分之前收到“施法请求”,计算结果并“通知”其余场景参与者所做的事情(玩家 X 被解雇,玩家你打...)。

我的问题是: 1. 哪种 XMPP 服务器最适合这项工作? 2. 哪种服务器端语言可以为预期数量的玩家支持近乎实时的“消息传递”? (24/7,多个“房间”[场景],数以万计的最终用户)。 3. 如果我们假设每个场景最多可以容纳 100 个用户,并且我们需要一个机器人出现在每个场景中,以响应玩家的行为并将它们“传递”给该场景中的其他参与者场景,最好的方法是什么: A. 将 MUC 与为每个房间创建的机器人一起使用,以用户身份加入,或者: B. 使用 PubSub 或其他方法。

【问题讨论】:

【参考方案1】:

我的项目有一个类似的场景。我使用 ejabberd 作为服务器,使用 strophejs 作为客户端。在服务器端,我使用了 java,因为它对我来说很熟悉。我使用了whack 库。 这是我做的事情。

    创建了一个外部组件,它将侦听某个特定端口。 每当客户端想要加入游戏时,它都会向组件发送消息

    收到消息后,外部组件创建一个新房间,并作为机器人加入游戏。

    此组件实现将为消息、状态通知等提供侦听器。因此组件或机器人可以对每条消息或状态进行操作。

    当ROM中没有用户时,房间将被关闭。 到目前为止,我完成了一个工作演示,产品还没有完成。我也发现了一些困难..:-)

【讨论】:

以上是关于XMPP 多 MUC Web 应用程序操作指南的主要内容,如果未能解决你的问题,请参考以下文章

XMPP MUC 向房间发送消息时重复消息

多用户聊天 XMPP

使用 xmpp 在 muc 中创建空间时出错

不允许任何所有者撤销创建房间/MUC 的用户的所有权 - Ejabberd XMPP

即使与 XMPP 服务器断开连接,如何保持群聊室(MUC)一直存在?

使用 aSmack 为 XMPP 群聊创建 MUC 房间时出现 ClassCastException