XMPP:只读多用户聊天
Posted
技术标签:
【中文标题】XMPP:只读多用户聊天【英文标题】:XMPP: Readonly multi user chat 【发布时间】: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>
在这种情况下,用户无法加入聊天。
有什么建议吗?
【问题讨论】:
【参考方案1】:您可以使用房间的语音策略来决定谁可以和谁不能给房间写信。
在您的情况下,您的房间需要两个角色:
访客 参与者您可以通过将其角色从 参与者 更改为 访问者 来禁用为任何用户编写消息的可能性.
在此处详细了解如何在 XEP-0045 中管理语音:http://xmpp.org/extensions/xep-0045.html#grantvoice
您需要确保您的 XMPP 服务器实现了此扩展。
【讨论】:
嗨@Mark,感谢您的回答。据我了解,默认情况下,所有新成员都会获得参与者状态。他们可以写消息,除非我向服务器发送请求以将他们的角色从参与者更改为访问者。那么我是否需要以某种方式倾听聊天中的新参与者,并在他们加入后立即改变他们的角色? 不正确:“默认情况下,非关联用户以访客身份进入主持房间,并以参与者身份进入开放房间。成员以参与者身份进入房间。管理员或所有者作为主持人进入房间。” 您需要将您的房间设置为open
和moderated
。您可以通过将muc#roomconfig_moderatedroom
字段值设置为1
并将muc#roomconfig_passwordprotectedroom
字段值设置为0
来执行此操作。
@Mark 是的,我已经尝试创建主持人。但是当我使用新帐户进入房间时,这个新成员立即具有参与者的角色(我不知道为什么)。实际上,我确实希望所有进入我主持房间的人从一开始都是访客。
@Dyrk 好的,我重新阅读了规范。尝试创建一个没有任何成员定义或列入白名单的有节制的、没有密码的、仅限成员的房间。根据 XEP-0045,在这种情况下,非会员居住者应具有访客角色。仅限成员标志由字段 muc#roomconfig_membersonly
定义。以上是关于XMPP:只读多用户聊天的主要内容,如果未能解决你的问题,请参考以下文章