我需要大量具有附加功能的MUC聊天:
从代码
处理特殊的“系统”调用(例如/ changeroom之类的调用必须不会传输给所有人,而是由系统处理)
在mnesia表中存储大量有关用户的其他数据
将所有历史记录存储在hdd上的db中,并根据请求返回。
唯一想到的(关于第二点)是捕获每个处理package_fillter事件的包。但这似乎太沉重了。
你有什么建议吗?
答案 0 :(得分:0)
我确认你的做法有点矫枉过正。处理所有数据包似乎是不必要的。
如果MUC XMPP扩展功能对您来说不够(XEP-0045),则需要编写自定义MUC模块扩展。
自ejabberd 15.07以来,引入了一个名为muc_filter_packet
的新挂钩API。它允许您轻松编写ejabberd模块以仅扩展MUC数据包处理,而无需监听所有服务器范围的数据包。