我需要通过Node动态创建一个不会自动删除的私人和持久聊天室。
我已经在网上搜索过了,但找不到太多该怎么做的东西。这是我用来创建聊天室的代码片段:
var cl = new xmpp.Client({
jid: jabber_creds.jid,
password: jabber_creds.password,
host: jabber_creds.host,
port: jabber_creds.port
});
cl.on('online', function() {
var room_jid = jabber_creds.room_jid.replace("%s", chatRoomName);
// join room (and request no chat history)
cl.send(new xmpp.Element('presence', { to: room_jid }).
c('x', { xmlns: 'http://jabber.org/protocol/muc' })
);
// create room
cl.send(new xmpp.Element('iq', { to: room_jid, id: 'create', type: 'set' }).
c('query', { xmlns: 'http://jabber.org/protocol/muc#owner' }).
c('x', { xmlns: 'jabber:x:data',type: 'submit' })
);
});发布于 2013-12-25 18:51:59
聊天室持久性是在服务器端处理的,而不是在客户端。是的,客户端可以请求服务器保留聊天室,但实际上不能从客户端持久化它。请查阅您正在使用的服务器文档,以确保它支持此功能。
发布于 2014-01-06 19:18:26
尝试遵循XEP-0045
http://xmpp.org/extensions/xep-0045.html#createroom
只需阅读,创建和配置此类文件室的工作流程如下部分所示
你需要做下一步:
发布于 2014-08-08 15:41:44
您可以参考https://github.com/node-xmpp/node-xmpp/blob/master/examples/create_room.js并通过XEP-0045发送您想要的配置
//create_room.js
'use strict'
var xmpp = require('../index')
,argv = process.argv
if (argv.length < 5) {
console.error('Usage: node create_room.js <my-jid> <my-password> <room-name>')
process.exit(1)
}
var cl = new xmpp.Client({ jid: argv[2], password: argv[3] })
cl.on('online', function(data) {
var userJid = data.jid.user + '@' + data.jid.domain,
roomJid = argv[4] + '@conference.' + data.jid.domain,
pres,
iq
console.log('Connected as ' + userJid + '/' + data.jid.resource)
console.log('Create room - ' + argv[4])
pres = new xmpp.Element(
'presence',
{ from: userJid, to: roomJid + '/' + data.jid.user })
.c('x', {'xmlns':'http://jabber.org/protocol/muc'})
cl.send(pres.tree())
iq = new xmpp.Element(
'iq',
{ to: roomJid, type: 'set' })
.c('query', { xmlns: 'http://jabber.org/protocol/muc#owner' })
.c('x', { xmlns: "jabber:x:data", type: "submit"})
//set room to be hidden by sending configuration. ref: http://xmpp.org/extensions/xep-0045.html
iq.c('field', { 'var': 'FORM_TYPE' })
.c('value').t('http://jabber.org/protocol/muc#roomconfig').up().up()
.c('field', { 'var': 'muc#roomconfig_publicroom'})
.c('value').t('0').up().up()
cl.send(iq.tree())
// exit later for sending configuration done
setTimeout(function() {
cl.end()
}, 100)
})
cl.on('error', function(e) {
console.error(e)
process.exit(1)
})https://stackoverflow.com/questions/20768020
复制相似问题