实际上,我们为客户的聊天应用程序使用ejabberd服务器。除了群组聊天之外,一切都运作良好。
我们正在使用MUC进行群组聊天,但是当成员离线时,它不会向成员发送消息。是否有任何替代插件或其他方法可以使其正常工作?
或者,有人可以建议如何从群组聊天历史记录中接收该用户的离线消息。
提前感谢。
实际上,我们为客户的聊天应用程序使用ejabberd服务器。除了群组聊天之外,一切都运作良好。
我们正在使用MUC进行群组聊天,但是当成员离线时,它不会向成员发送消息。是否有任何替代插件或其他方法可以使其正常工作?
或者,有人可以建议如何从群组聊天历史记录中接收该用户的离线消息。
提前感谢。
正如您所看到的,XMPP MUC聊天室非常像增强版IRC聊天。
因此,您真正想要的是"房间历史记录"——这是XMPP-0045
扩展的一部分,允许客户端明确要求房间提供他们错过的消息历史记录。 从某种意义上说,房间可能被配置为仅存储发送给它的最近的一定数量的消息(或给定时间段内的所有这些消息),而不是为每个用户存储离线消息。 然后,房间支持查询这些消息的加入用户。
还有另一个可能性可以探索:"多播寻址",它属于XEP-0033
("扩展数据包寻址")。 基本上,它允许客户端使用特殊的多播服务将其消息同时发送给多个收件人。 优点是再次具有离线存储功能。 缺点是我怀疑ejabberd默认情况下是否支持这样的多播服务,并且似乎该扩展留下了许多关于如何实现它的细节未指定。
ejabberd 16.09版本的新服务器对多用户聊天(MUC Sub)进行了改进:
MUC Sub的目标是尽可能依赖现有的MUC规范,同时尽可能少地进行更改,以使移动群组会话客户端易于使用。
该功能默认启用。要使用它,请确保在要使用它的房间中设置新参数“Allow subscription”。
这里是文档链接: https://docs.ejabberd.im/developer/proposed-extensions/muc-sub/
更多信息请查看: https://blog.process-one.net/xmpp-mobile-groupchat-introducing-muc-subscription/