我最近一直在玩ejabberd的新的MUC-Sub模块--用例是我需要在我的移动应用程序中拥有类似WhatsApp的永久房间。在我进一步使用MUC/Sub之前,请ejabberd专家就以下概念发表意见?可能是因为我对ejabberd缺乏充分的了解,所以才是基本的问题。或者让我知道,请找个好地方开始更好地了解下面.我已经详细研究了这两个链接(https://blog.process-one.net/xmpp-mobile-groupchat-introducing-muc-subscription/和https://docs.ejabberd.im/developer/proposed-extensions/muc-sub/)。谢谢!
本质上,如果我们需要一个MUC房间来停止在所有用户离线时被破坏,难道我们不能简单地禁用这个功能吗?这样,即使参与者离开或者房间是空的,服务也能继续运行。该服务仍然可以继续指向加入该房间的原始房间参与者,如果在房间中发送了一条消息,该消息将在每个参与者的流上排队。如果参与者脱机,消息将输入他/她的脱机消息列表(而不是MUC-Sub目前正在使用的存档/ MAM )。为什么我们需要依赖Pub和MAM模型,如果这个问题可以通过简单地保留参与者在房间中的引用(即使在他/她离线之后)来解决,然后利用mod_offline模块(这应该是自动发生的)。
我相信这里有一个根本的原因,我可以忽略,但如果有人可以抛出一些光,请欣赏!
发布于 2016-08-04 08:48:45
正如这篇博文所解释的,这不是一个保持聊天室生存的问题。事实上,当离线或重新连接时,用户无法接收推送,如果他们没有再次加入,这是因为MUC是基于存在的。没有出现在房间里的用户不是房间的占用者,也不应该接收任何东西。
我建议您再次仔细阅读XEP-0045和MUC部落格文章。issue解决的问题应该更加明显。
如果这样做,您将注意到XEP-0045定义了持久的MUC的概念:
如果最后一个人离开的话不会被摧毁的房间;反义词:临时房间。
ejabberd中的默认设置是在用户加入时将房间创建为临时的,但是可以更改房间的设置,使其成为持久的。在这种情况下,它不会在最后一名乘员离开时被摧毁。您需要更改房间配置选项(与您在该房间上启用MUC Sub的形式相同)。
您通常希望将此选项与MUC Sub启用相结合,这样即使没有用户在场,也可以保持MUC的空间。
https://stackoverflow.com/questions/38748283
复制相似问题