Ejabberd:MUC 中的其他消息类型

Posted

技术标签:

【中文标题】Ejabberd:MUC 中的其他消息类型【英文标题】:Ejabberd: Additional message types in MUC 【发布时间】:2012-01-30 00:43:52 【问题描述】:

我需要大量具有附加功能的 MUC 聊天:

    通过代码手动更改用户房间

    处理特殊的“系统”调用(例如,像 /changeroom 这样的调用不能传送给每个人,而是由系统处理)

    在 mnesia 表中存储大量有关用户的附加数据

    将所有历史记录存储在硬盘上的 db 中某处,并在请求时返回。

唯一想到的(关于第二点)是捕获每个处理 package_fillter 事件的包。但这似乎太重了。

你有什么建议?

【问题讨论】:

【参考方案1】:

我确认你的方法有点矫枉过正。处理所有数据包似乎没有必要。

如果 MUC XMPP 扩展的功能不足以满足您的需求,您需要编写自定义 MUC 模块扩展 (XEP-0045)。

从ejabberd 15.07 开始,引入了一个名为muc_filter_packet 的新钩子API。它允许您轻松编写一个 ejabberd 模块来仅扩展 MUC 数据包处理,而无需侦听所有服务器范围的数据包。

【讨论】:

以上是关于Ejabberd:MUC 中的其他消息类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ejabberd 上为 muc(多用户聊天)设置不同的消息间隔?

为 iOS 实现 Ejabberd MUC Sub

如何清除 Ejabberd 中的 MUC 历史记录

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

集群 ejabberd 的 MUC 和 PubSub 主机

无法从 ejabberd 列出 muc 房间