小编pro*_*iot的帖子

即使从XMPP服务器断开连接,如何保持群聊室(MUC)始终存在?

我正在使用XMPP(Jabber)协议中的openfire/jsjac开发即时消息模块(J2EE Web应用程序的一部分).

openfire用户/组管理/表已被重定向到我们的业务数据库表,这意味着我不再需要在openfire中维护用户/组.已在业务数据库中设置所有用户/组关系.

下面是我根据要求绘制的关于主窗格的图片.由于我的声望很低,我无法发布图片,所以我发布了一个url作为我的即时消息主UI的图像.很抱歉给您带来不便. instantmessage主UI图像

你们可以看到在左侧窗格中,没有用户/组列表.根据历史记录保存了会话,这让我很困惑,特别是关于组.我从XMPP.org上读到了"XEP-0045:多用户聊天".我知道有关群聊的一般工作流程: XEP-0045:多用户聊天"

  1. 创建房间,生成roomJid.
  2. 配置房间.(预留房间)
  3. 从业务数据库获取usersjid并将用户绑定(添加)到新创建的房间.
  4. 发送消息到房间.
  5. 服务将向所有组成员发送消息.

并且知道有房间类型是持久性房间被解释为" 如果最后一个占用者退出的话没被破坏的房间;反义词:临时房间. "由doc.在同一个文档中有一些句子说:

房间所有者必须能够摧毁房间,特别是如果房间是持久的.工作流程如下:

  1. 房间所有者要求销毁房间,可选择指定原因和替代场地.
  2. 房间将所有用户从房间中移除(包括有关替代位置的适当信息和被移除的原因)并破坏房间,即使它被定义为持久性.

看完上面这句话后,我更加疑惑,有几个问题我还是很困惑.

  1. "占用者出口"是什么意思?如果一个占用者从系统中退出(离线),那就意味着"存在".并且所有占用者都处于离线状态,这是否意味着"持久类型"将使我们创建的房间保持存在?那么保存房间信息的地方?在openfire或其他地方?
  2. 假设所有占用者都存在(离线),通过这个创建的房间没有被破坏,绑定信息怎么样?我的意思是假设一个用户被所有者(管理员)授予了成员资格,如果该用户存在或离线,持久性房间将保留其成员角色,对吧?换句话说,只要房间没有被破坏,所有的配置和绑定信息都不会丢失,对吧?
  3. openfire服务器遇到重启的情况怎么样,创建的房间及其信息是否仍然存在?
  4. 如果所有者重新登录,如何重新找到创建的房间?通过保存房间ID?

除了上面的问题,我还想到了实现具有持久性空间的MUC的工作流程.请你检查一下,看看流程中存在哪些问题?

我的工作流程为MUC提供持久的空间

  1. 所有者将存在对象发送到服务器创建房间并给房间JID,并设置房间ID.
  2. 所有者将IQ对象发送到服务器以配置创建的房间并将房间类型设置为"持久".
  3. 所有者发送IQ对象以授予其他用户成员角色.(绑定信息)
  4. 所有者将消息Object发送到ROOM jid,ROOM jid将所有消息转发给其绑定成员.
  5. 这个房间的普通会员处理消息(接收)并获得房间jid和房间ID (我希望包括所有者在内的所有用户都可以使用这个房间ID在他们重新登录时重新找到房间..)

所以无论角色是什么,所有者或普通会员,如何根据房间jid或房间id重新加入和重新加入创建的房间,前提是房间类型是"持久的"?

xmpp openfire jsjac

10
推荐指数
1
解决办法
8004
查看次数

标签 统计

jsjac ×1

openfire ×1

xmpp ×1