MUC 房间被锁定,默认安装 tigase

Posted

技术标签:

【中文标题】MUC 房间被锁定,默认安装 tigase【英文标题】:MUC room is locked with default installation of tigase 【发布时间】:2016-01-23 07:23:19 【问题描述】:

我已经安装了基本配置的 tigase7.0.2。

现在我正在使用已安装的服务器执行 MUC,代码如下:

创建房间

MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
MultiUserChat muc = MainActivity.manager.getMultiUserChat("myroom@muc." + connection.getServiceName());

加入房间

    muc = MainActivity.manager.getMultiUserChat("myroom@muc." + connection.getServiceName());
    muc.join(connection.getUser().split("@")[0]);
    muc.addMessageListener(new MessageListener() 
   @Override
   public void processMessage(final Message message) 
           runOnUiThread(new Runnable() 
           @Override
           public void run() 
          Toast.makeText(UserListActivity.this, message.getFrom() + ":" + message.getBody(), Toast.LENGTH_SHORT).show();
    
       );
    
   );

当我加入房间时,Toast 中会显示以下消息。

: Room is locked. Please configure.
: Welcome! You created new Multi User Chat Room. Room is locked now. Configure it please!

当我加入房间时,它会在日志中显示以下错误。

【问题讨论】:

【参考方案1】:

当您第一次创建 MUC 房间时,它会被“锁定”,直到您对其进行配置。有两种方式来配置房间:要么接受默认配置(这称为“即时”房间),要么指定您想要的配置。

section 10.1.2 of XEP-0045 中描述了创建即时房间:

<iq from='crone1@shakespeare.lit/desktop'
    id='create1'
    to='coven@chat.shakespeare.lit'
    type='set'>
  <query xmlns='http://jabber.org/protocol/muc#owner'>
    <x xmlns='jabber:x:data' type='submit'/>
  </query>
</iq>

也就是说,发送一个类型为set 的IQ 消息,其中包含MUC 所有者命名空间中的query 元素,仅包含一个“提交”表单。 this answer中也提到了这一点。

要为房间使用特定配置,请参阅section 10.1.3 of XEP-0045。首先请求配置表以了解支持哪些选项,然后填写您需要的设置。 This answer 描述了如何创建一个公开且持久的房间。

【讨论】:

以上是关于MUC 房间被锁定,默认安装 tigase的主要内容,如果未能解决你的问题,请参考以下文章

xmpp/smack : muc(MultiUserChat:多人聊天)房间配置表单

如何使用 Smack 确定 MUC 是不是存在?

如何知道谁在 MUC 房间收到了消息

strophe js MUC房间

SleekXMPP Muc 房间列表和发现

Tigase8日志配置说明