У меня была эта проблема при использовании Candy Chat 1.7.1 с Openfire 3.9.3.
Мне потребовалось некоторое время, чтобы потренироваться, но после прочтения спецификации многопользовательского чата:
http://xmpp.org/extensions/xep-0045.html#createroom
Я в конце концов решил это; сначала со Строфой, потом с того, что нашли путь Кенди.
Итак, чтобы ответить на ваш вопрос:
В Строфе
После создания комнаты путем отправки присутствия (Пример 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 - Строфа. Соединение
Тогда, чтобы помочь другим, у кого может быть такая же проблема в Candy Chat:
В 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, и в Candy chat должна быть опция для этого метода init или аналогичного.