gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:54 27 4
gpt4 key购买 nike

我正在创建一个聊天网站,我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com