【问题标题】:XMPP: Readonly multi user chatXMPP:只读多用户聊天
【发布时间】:2015-10-06 09:06:29
【问题描述】:

我想创建 MUC,其中只有 1 个用户(所有者/管理员)可以发送消息。 其他用户应该在没有任何邀请的情况下加入聊天,但只能在只读模式下。 (类似于新闻提要,解析器每 15 分钟将新闻发布到聊天室,任何人都可以加入聊天室并阅读新闻,但没有人可以向此聊天室写信)

我已经试过了:

<field
    var='muc#roomconfig_moderatedroom'>
    <value>1</value>
</field>

但任何用户仍然可以在聊天中写消息。 我试过了:

<field
    var='muc#roomconfig_membersonly'>
    <value>1</value>
</field>

在这种情况下,用户无法加入聊天。

有什么建议吗?

【问题讨论】:

    标签: node.js xmpp node-xmpp muc


    【解决方案1】:

    您可以使用房间的语音策略来决定谁可以和谁不能给房间写信。

    在您的情况下,您的房间需要两个角色:

    • 访客
    • 参与者

    您可以通过将其角色从 参与者 更改为 访问者 来禁用为任何用户编写消息的可能性.

    在此处详细了解如何在 XEP-0045 中管理语音:http://xmpp.org/extensions/xep-0045.html#grantvoice

    您需要确保您的 XMPP 服务器实现了此扩展。

    【讨论】:

    • 嗨@Mark,感谢您的回答。据我了解,默认情况下,所有新成员都会获得参与者状态。他们可以写消息,除非我向服务器发送请求以将他们的角色从参与者更改为访问者。那么我是否需要以某种方式倾听聊天中的新参与者,并在他们加入后立即改变他们的角色?
    • 不正确:“默认情况下,非关联用户以访客身份进入主持房间,并以参与者身份进入开放房间。成员以参与者身份进入房间。管理员或所有者作为主持人进入房间。”
    • 您需要将您的房间设置为openmoderated。您可以通过将muc#roomconfig_moderatedroom 字段值设置为1 并将muc#roomconfig_passwordprotectedroom 字段值设置为0 来执行此操作。
    • @Mark 是的,我已经尝试创建主持人。但是当我使用新帐户进入房间时,这个新成员立即具有参与者的角色(我不知道为什么)。实际上,我确实希望所有进入我主持房间的人从一开始都是访客。
    • @Dyrk 好的,我重新阅读了规范。尝试创建一个没有任何成员定义或列入白名单的有节制的、没有密码的、仅限成员的房间。根据 XEP-0045,在这种情况下,非会员居住者应具有访客角色。仅限成员标志由字段 muc#roomconfig_membersonly 定义。
    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2015-09-06
    • 2011-03-10
    • 2014-06-10
    • 2013-08-14
    相关资源
    最近更新 更多