【问题标题】:Conversejs groupchat subscriptions (ejabberd)Conversejs 群聊订阅 (ejabberd)
【发布时间】:2021-09-03 14:47:34
【问题描述】:

我一直在努力使用 conversejs 和 ejabberd 配置群聊。从我偶然发现的文档来看,似乎可以有一个用户可以订阅的持久群聊,这将允许他们在群聊中不存在的情况下接收来自群聊的消息。

例如:我希望能够简单地关闭我的 conversejs 客户端上的群聊,但仍会收到来自该群聊的通知。

这是一个全新的 ejabberd 21.04 和 conversejs 7.0.6 安装(使用 websockets)。

我尝试做的是通过 conversejs 客户端创建一个房间,然后通过 ejabberd cli 添加订阅: ejabberdctl subscribe_room user@my.example.com/muc user test_room@conference.my.example.com urn:xmpp:mucsub:nodes:messages

我最困惑的一件事是群聊配置面板中名为“XMPP URI of Associated Publish-Subscribe Node”的字段。我不知道如何格式化,但在网上找到了一些线索......我尝试过的是一些不同的配置,例如: xmpp:my.example.com?;node=messages 但我真的只是抓住了稻草。

如果有人可以帮助我找出我在使用这个 URI 时做错了什么,或者可以向我展示一个可行的示例,那就太棒了。如果 XMPP 无法实现我想要做的事情,请也告诉我。

谢谢!

【问题讨论】:

    标签: publish-subscribe ejabberd multiuserchat converse.js groupchat


    【解决方案1】:

    可以有一个用户可以订阅的持久群聊,这将允许他们在群聊中不存在时接收来自群聊的消息。

    没错。

    ejabberdctl create_room room1 conf.localhost localhost
    
    ejabberdctl change_room_option room1 conf.localhost persistent true
    
    ejabberdctl change_room_option room1 conf.localhost allow_subscription true
    
    ejabberdctl subscribe_room user1@localhost User1 room1@conf.localhost urn:xmpp:mucsub:nodes:messages
    

    现在我将使用 send_message API 调用向房间发送消息。这要求发件人在线,因此在本示例中注册并登录到 admin@localhost。当然,登录到 user1@localhost 以接收来自房间的通知。这些客户不需要加入房间。

    ejabberdctl send_message groupchat admin@localhost room1@conf.localhost Sub Body
    

    【讨论】:

      猜你喜欢
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 2019-02-14
      • 2017-10-16
      • 1970-01-01
      • 2019-06-23
      相关资源
      最近更新 更多