为什么用户加入会议后直接是moderator

最近一直调试一个问题,从程序端创建会议以后,当前创建会议用户会自动变为主持人(moderator),这是正常的。可以进行踢人、退会等相关操作。

但是从网页端进入的用户8001,加入同一个会议室以后也自动变成了主持人(moderator),这是不正常的,因为第二个人及其以后进入同一个用户应该是自动作为一个参与者,为什么会直接变成主持人呢?

我目前用smack作为客户端,prosody作为服务器端,进行转发和控制信息。
smack首先作为客户端和prosody进行通信,prosody进行转发消息的时候会自动和配置的 component进行通信。 真正进行视频音频处理是component上配置的服务。

从网页端进入的8001直接成了主持人以后,创建会议的用户就无法对8001用户进行踢人和退会操作。

调试半天没有结果,发送的IQ和presence消息和网页端都进行了分析对比,依然没有结果。

最后突然想起来是不是prosody配置了管理员,8001默认就是管理员呢?这样进去以后权限直接是主持人(moderator)也就不奇怪了。

查看prosody配置文件,我们的服务器指定在conf.d中,打开后:

为什么用户加入会议后直接是moderator_第1张图片
4.pic_hd.jpg

可以看到在对应的admins中配置了8001这个用户,所以每次这个用户进入会议后,自动就变成了moderator(主持人)了。

解决方法:
1、换一个用户登录
2、把admin中的该用户去除,8001只是作为一个普通参与者

就可以解决了。

另外说一下restrict_room_creation = false 这个参数在配置文件中的作用:

如果为true,只有对应的admins中配置的用户可以创建房间信息。

如果为false,任意一个用户都可以创建房间。

根据测试:默认应该为true。

当时因为这个参数不理解,耗费了不少时间,无论如何就是不能创建用户,最后把该参数修改为:false,任意用户就可以创建房间了。(前提是已经在prosody上注册的用户)

prosody官方配置文档
XEP-54标准
stackoverflow
xmpp概念

你可能感兴趣的:(为什么用户加入会议后直接是moderator)