我正在使用XMPP(Jabber)协议中的openfire / jsjac开发即时消息模块(J2EE Web应用程序的一部分)。
openfire用户/组管理/表已被重定向到我们的业务数据库表,这意味着我不再需要在openfire中维护用户/组。已在业务数据库中设置所有用户/组关系。
下面是我根据要求绘制的关于主窗格的图片。 由于我的声望很低,我无法发布图片,所以我发布了一个url作为我的即时消息主UI的图像。很抱歉给您带来不便。 instantmessage main UI Image
你们可以看到左侧窗格中没有用户/组列表。根据历史记录保存会话,这让我很困惑,特别是关于群组。 我从XMPP.org上读到了“XEP-0045:多用户聊天”。我知道有关群聊的一般工作流程: XEP-0045: Multi-User Chat"
并知道房间类型是持续房间被解释为“如果最后一个占用者退出则不被破坏的房间;反义词:临时房间。”通过doc。 在同一个文档中有一些句子说:
房间所有者必须能够摧毁房间,特别是如果房间是持久的。工作流程如下:
阅读完上述句子后,我更加困惑,有几个问题我仍然感到困惑。
除了上面的问题,我还想到了用持久空间实现MUC的工作流程。请你检查一下,看看流程中存在哪些问题?
我的具有持久空间的MUC的工作流程
所以无论角色是什么,所有者或普通会员,如何根据房间jid或房间id重新加入和重新加入创建的房间,前提条件是房间类型是“持久的”??
答案 0 :(得分:2)
规范说“必须能够摧毁”,而不是“必须摧毁”。当最后一个用户离开MUC时,持久性MUC 不会自动销毁
我依赖于MUC组件的实现。如果它将持久性MUC存储在持久存储上,则它能够在重新启动时重新加载所有持久性MUC。 IIRC是Openfire的MUC组成部分。
让它持久。
答案 1 :(得分:0)
您需要更新openfire中的java代码,以便在用户离线时不会删除组。您需要在openfire中针对MUC更新代码
答案 2 :(得分:0)
我建议您查看MUCLight的新XMPP功能。
这有多种功能,但不仅仅是whatsapp和你期望的功能。
持久性在此MUCLight组类型中处理。
通过MongooseIM服务器的XMPP :https://mongooseim.readthedocs.io/en/latest/open-extensions/muc_light/
XMPP over Ejabberd Server :https://www.ejabberd.im/aggregator/categories/2