Strophe.js MUC:创建一个房间并连接多个房间
Strophe.js MUC: creating a room and joining more than one room
我正在创建一个聊天网站,我正在使用Strophe.js和Strophe.muc.js插件。单聊功能很好,但我也不想实现群聊功能,用户可以创建房间并邀请其他用户到他们的房间。使用muc插件,我可以创建一个房间,但问题是,除非我不配置它(我想),否则其他用户无法加入,而且房间也不持久。我知道muc插件有配置方法,但我不知道如何创建configForm对象,我不知道它应该是什么样子。这将是我的第一个问题。第二:我有可能加入多个房间,并从我所在的所有房间收到消息吗?如果没有,那么就没有必要回答我的第一个问题。。。
在尝试了Mark S的解决方案后,我发现我必须先发送presence才能创建房间。我在下面列出了整个代码,希望这能有所帮助。
//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); });
我发现,如果我不发送任何配置,打开的即时消息服务器只会将房间写入缓存,而不会写入数据库,因此在重新启动即时消息服务器后,房间将消失。
- 默认情况下,您可以在jabber服务器上将房间设置为持久
- 创建房间需要两个步骤。首先创建房间,然后配置房间
- 你可以加入任意多个房间
房间配置类似于(如果您检查服务器的响应,您将在可用字段的第一步获得一个表单)。
第二步看起来像:
var iq, stanza;
iq = $iq({
to: newroomjid,
type: "set"
}).c("query", {
xmlns: Strophe.NS.MUC_OWNER
});
iq.c("x", {
xmlns: "jabber:x:data",
type: "submit"
});
iq.c('field', { 'var': 'FORM_TYPE' }).c('value').t('http://jabber.org/protocol/muc#roomconfig').up().up();
iq.c('field', { 'var': 'muc#roomconfig_roomname' }).c('value').t(roomName).up().up();
stanza = iq.tree();
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 希望日期开始结束于while循环中的一个房间id的一个数组
- Strophe.js MUC:创建一个房间并连接多个房间
- 如何使用 ThreeJS 创建一个房间
- 检查在哪个房间是一个指定的客户端套接字io
- 搬到下一个房间去'从一个Div到另一个Div
- 如何添加插座?IO套接字通过他们的socketid到一个房间
- html5 Canvas创建一个虚拟房间
- (Socket.io)一个插座连接多个房间