我需要大量具有附加功能的 MUC 聊天:
从代码手动更改用户的房间
处理特殊的“系统”调用(例如像 /changeroom 这样的调用不能传送给每个人,而是由系统处理)
在 mnesia 表中存储大量有关用户的附加数据
将所有历史记录存储在硬盘上 db 的某个位置,并根据请求返回。
唯一想到的(关于第二点)是捕获每个处理 package_fillter 事件的包。但这似乎太重了。
你有什么建议?
我需要大量具有附加功能的 MUC 聊天:
从代码手动更改用户的房间
处理特殊的“系统”调用(例如像 /changeroom 这样的调用不能传送给每个人,而是由系统处理)
在 mnesia 表中存储大量有关用户的附加数据
将所有历史记录存储在硬盘上 db 的某个位置,并根据请求返回。
唯一想到的(关于第二点)是捕获每个处理 package_fillter 事件的包。但这似乎太重了。
你有什么建议?
我确认你的方法是矫枉过正。处理所有数据包似乎没有必要。
如果 MUC XMPP 扩展的功能不足以满足您的需求,您需要编写自定义 MUC 模块扩展 (XEP-0045)。
从ejabberd 15.07开始,引入了一个新的钩子 API,称为muc_filter_packet
. 它允许您轻松编写一个 ejabberd 模块来仅扩展 MUC 数据包处理,而无需侦听所有服务器范围的数据包。