在openfire服务器中创建聊天室时出现问题

时间:2011-08-30 13:38:43

标签: xmpp openfire

当我尝试在多用户聊天(MUC)中创建一个房间时,服务器响应'此房间从入口锁定,直到确认配置'。我怎么能克服这个?

提前致谢

2 个答案:

答案 0 :(得分:7)

你需要send a configuration form房间。如果你使用smack,代码看起来像这样:

Form submitForm = multiUserChat.getConfigurationForm().createAnswerForm();
submitForm.setAnswer("muc#roomconfig_publicroom", false);
submitForm.setAnswer("muc#roomconfig_roomname", room);
multiUserChat.sendConfigurationForm(submitForm);

答案 1 :(得分:1)

我在使用Candy Chat 1.7.1和Openfire 3.9.3时遇到了这个问题。

我花了一些时间来解决这个问题,但在阅读了多用户聊天规范之后: http://xmpp.org/extensions/xep-0045.html#createroom

我最终解决了它;首先是Strophe,然后从那里找到了Candy方式。

所以回答你的问题:

在Strophe

通过发送状态创建房间(规范中的示例153)

我发送了以下内容(根据规范中的示例155)

conn.sendIQ($iq({
    type: "set",
    to: escapedRoomId,
    from: me.getEscapedJid(),
    id: "create:" + conn.getUniqueId()
}).c("query", {
    xmlns: "http://jabber.org/protocol/muc#owner"
}).c("x", {
    xmlns: "jabber:x:data",
    type: "submit"
}));

其中conn是Strophe.Connection

然后帮助其他可能在Candy Chat中遇到同样问题的人:

在糖果聊天中

在糖果库捆绑包中搜索上面的Strophe消息后,我发现了这个:

createInstantRoom: function(room, success_cb, error_cb) {
    var roomiq;
    roomiq = $iq({
        to: room,
        type: "set"
    }).c("query", {
        xmlns: Strophe.NS.MUC_OWNER
    }).c("x", {
        xmlns: "jabber:x:data",
        type: "submit"
    });
    return this._connection.sendIQ(roomiq.tree(), success_cb, error_cb);
},

所以这就解决了它在Candy Chat中的问题。

$(Candy).on('candy:view.room.after-add', function(evt, args) {
    Candy.Core.getConnection().muc.createInstantRoom(Candy.Util.escapeJid(args.roomJid));
});

当你知道如何时非常简单。顺便说一句,我认为该方法应该被称为configureAsInstantRoom,而糖果聊天应该在init方法或类似方法上有一个选项。