xmpp - 如何使用 strophe 在 openfire 中创建永久房间?

标签 xmpp openfire strophe

我正在使用以下 iq 消息在 openfire 中创建永久房间:

var configiq = $iq({
        to : chatObj.getActiveChatRoomName() + "@" + chatObj.groupChatService,
        type : "set"
    }).c("x", {
        xmlns : "jabber:x:data",
        type : "submit"
    }).c('field', {
        "var" : "FORM_TYPE"
    })
    .c('value').t("http://jabber.org/protocol/muc#roomconfig")
    .up().up()
    .c('field', {
        "var" : "muc#roomconfig_persistentroom"
    })
    .c('value').t("1");


chatObj.connection.sendIQ(configiq.tree(), function () {
    console.log('success');
}, function (err) {
    console.log('error', err);
});

但是,我收到以下错误:

error <iq xmlns=​"jabber:​client" type=​"error" id=​"1356:​sendIQ" from=​"msrtc0711@conference.stslp239" to=​"ashishjmeshram@stslp239/​ax8nb2atg1">​<x xmlns=​"jabber:​x:​data" type=​"submit">​…​</x>​<error code=​"400" type=​"modify">​<bad-request xmlns=​"urn:​ietf:​params:​xml:​ns:​xmpp-stanzas">​</bad-request>​</error>​</iq>​

最佳答案

使用 Strophe.muc插件更简单:

1) 首先加入房间(这会创建一个即时房间):

connection.muc.join(room_jid, nick);

2) 然后创建一个“配置的房间”,最终关联一个主题和描述:

var config = {"muc#roomconfig_publicroom": "1", "muc#roomconfig_persistentroom": "1"};
if (descr)  config["muc#roomconfig_roomdesc"] = descr;
if (subject)  config["muc#roomconfig_subject"] = subject;
connection.muc.createConfiguredRoom(room_jid, config, onCreateRoomSuccess, onCreateRoomError);

此处提供了一个工作示例:http://plnkr.co/edit/Mbi15HDZ2yW5vXskS2X6?p=preview

关于xmpp - 如何使用 strophe 在 openfire 中创建永久房间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45588494/

相关文章:

java - 无法将消息发送到 activemq 中的 xmpp 队列

ionic-framework - 向消息添加自定义属性,不使用 stanza.io 将消息存储在服务器上的存档表中

android - 使用 XMPP 与移动应用进行频繁通信

Node.js、XMPP Strope.js

ios - XMPPFramework - 在 Openfire 上通过 SSL 连接

security - 如何在 Openfire 上配置 OTR?

android - 我无法从当前添加的用户获取昵称

java - 从 Android 中的 Openfire 服务器获取所有用户的列表

xmpp pubsub 不传递消息

xmpp - 如何在 strophe.js 中发送\n 中性字符