javascript - Strophe.js MUC : creating a room and joining more than one room

标签 javascript strophe

我正在创建一个聊天网站,我正在使用 Strophe.js 和 Strophe.muc.js 插件。单人聊天功能运行良好,但我也不想实现群聊功能,用户可以在其中创建房间并邀请其他用户加入他们的房间。使用 muc 插件,我可以创建一个房间,但问题是,除非我不配置它(我猜),否则其他用户无法加入并且房间不会持久存在。我知道 muc 插件有配置方法,但我不知道如何创建配置 Form 对象,我不知道它应该是什么样子。这将是我的第一个问题。 第二:是否有可能我加入多个房间并从我所在的所有房间收到消息?如果没有,那么就没有必要回答我的第一个问题......

最佳答案

在尝试了 Mark S 的解决方案后,我发现我必须先发送在线状态才能创建房间。我在下面列出了整个代码,希望这对您有所帮助。

//before executing the code below, you need to connect to IM server (var conn is Strophe.Connection)
var userName = "steve",
    serverName = "example.com",
    userJid = userName + '@' + serverName,
    roomJid = 'testRoom' + '@conference.' + serverName,
    iq;

//send presence first for creating room
var d = $pres({'from': userJid, 'to': roomJid + '/' + userName})
conn.send(d.tree());

iq = $iq({
    to: roomJid,
    type: 'set'
}).c("query", {
    xmlns: Strophe.NS.MUC_OWNER
});
iq.c("x", {
    xmlns: "jabber:x:data",
    type: "submit"
});

//send configuration you want
iq.c('field', { 'var': 'FORM_TYPE' }).c('value').t('http://jabber.org/protocol/muc#roomconfig').up().up();
iq.c('field', { 'var': 'muc#roomconfig_publicroom' }).c('value').t('1').up().up();

conn.sendIQ(iq.tree(), function () { console.log('success'); }, function (err) { console.log('error', err); });

我发现如果我不发送任何配置,openfire的即时消息服务器只会将房间写入缓存,而不是数据库,所以重启即时消息服务器后房间就会消失。

关于javascript - Strophe.js MUC : creating a room and joining more than one room,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612063/

相关文章:

javascript 二维数组 - 排序和合并

javascript - 如何在 javascript 事件处理程序中获取对象?

javascript - 是否有任何理由将声明函数重构为表达式函数?

xmpp - 使用 strope.js 和旁遮普语将 Google Talk 集成到网络应用程序

python - 无法运行旁遮普语

javascript - 无法在javascript中获得 "\n"的效果

xmpp - BOSH模块未启动: Ejabberd/Strophe setup issue

javascript - 使用 attach() 时 Strophe 中的 404(无效的 SID 值)

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

Javascript:将项目推送到数组不起作用