当我尝试在多用户聊天(MUC)中创建一个房间时,服务器响应'此房间从入口锁定,直到确认配置'。我怎么能克服这个?
提前致谢
答案 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方式。
所以回答你的问题:
通过发送状态创建房间(规范中的示例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方法或类似方法上有一个选项。