未经邀请加入XMPP MUC Room - ejabberd

Joining XMPP MUC Room without invite - ejabberd

对于持久的XMPP房间,如果他/她断开一次连接,如何让客户端再次加入房间?在测试期间,我发现简单地将出席节发送回所述房间的 JID 并不能使客户端再次在房间中可用。是否仅当用户收到邀请后才会重新进入房间(因此,在我们的例子中,如果用户断开连接一次,用户将需要另一个邀请才能加入房间?)?

如果是这样,那么为正在重新连接的原始房间参与者自动生成此类邀请的最佳方式是什么?

谢谢。

最好的方法是使用 pubsub 功能和相关的 MultiUserChat bookmarks。 如果您需要根据您的特殊需要拒绝的东西,您可以开发一个自定义书签管理器。

是否需要以下步骤:

1) 创建持久群聊时,在首次加入后将群聊添加为书签。 (=> 保存在 db 群聊名称和密码)

2) 收到邀请时,在第一次加入后将群聊加入书签(=> 保存在数据库群聊名称和密码上)

3) 在登录/重新连接时检索书签列表

4) Foreach 书签 -> 加入(并分配监听器等)

5) 提供删除书签条件(基于时间戳、会话、显式请求等)。

Official specifications

有一个 proposed XEP,它在支持订阅的最新 ejabberd 中实现。它将 MUC 房间公开为 pubsub 节点,以引入 MUC 房间订阅者的概念。