【问题标题】:How to fetch private room list using ejabberd (using their API and/or using XML)?如何使用 ejabberd(使用他们的 API 和/或使用 XML)获取私人房间列表?
【发布时间】:2020-01-26 01:08:48
【问题描述】:

我知道我可以使用以下方法从我的服务器中检索公共房间列表:

<iq from='hag66@shakespeare.lit/pda'
    id='zb8q41f4'
    to='chat.shakespeare.lit'
    type='get'>
  <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>

XEP-0045 - Discovering Rooms

但是,我需要所有房间的列表,无论是公共房间还是私人房间,以及是否在线。

有什么建议,特别是通过 XML?

【问题讨论】:

  • 如果房间没有配置muc#roomconfig_publicroom,那么它不会出现在服务发现中——这就是这个配置选项背后的重点。
  • 他们不公开。我知道使用上面的代码我不应该检索该列表。我需要的是一种检索私人的方法。

标签: xml xmpp ejabberd strophe converse.js


【解决方案1】:

它们不公开。我知道使用上面的代码我不应该检索该列表。我需要的是一种检索私人的方法。

当 MUC 管理员请求房间列表时,他会获取所有房间,包括私人房间。

您还可以使用此 ejabberd 命令获取房间的完整列表:

$ ejabberdctl muc_online_rooms muc.localhost
privateroomcreatedbyuser1@muc.localhost
privateroomcreatedbyuser3@muc.localhost
publicroomcreatedbyuser1@muc.localhost
publicroomcreatedbyuser3@muc.localhost

如果启用相应的模块,这些命令可以通过 XML-RPC 或 ReST 调用执行。

【讨论】:

    【解决方案2】:

    如果您使用Muc-Sub,那么在 ejabberd 21.04 中有一个新的 api /api/get_user_subscriptions 来获取用户的所有订阅房间列表。可以看Api Documentation

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 2015-02-26
      • 2020-11-14
      • 1970-01-01
      • 2018-11-13
      • 2012-08-10
      • 2015-02-23
      • 2021-04-25
      相关资源
      最近更新 更多