XMPP MUC如何永久加入房间
XMPP MUC how to permanently join a room
我希望 XMPP 房间的 bot 所有者一直在,但我一直从房间消失,必须重新加入。我必须怎么做才能保持我在房间里的存在?它是可配置的吗?我在 XEP-0045 中找不到答案。
http://xmpp.org/extensions/xep-0045.html
这是我的代码:
function daemonPresence(callback) {
var ElizaBot = require('./eliza');
var eliza = new ElizaBot();
var initial = eliza.getInitial();
var XMPP = require('stanza.io');
var administrator = 'metalaureate@' + config.get('xmpp.domain');
var client = XMPP.createClient({
jid: administrator,
password: 'password',
transport: 'bosh',
boshURL: config.get('xmpp.bosh_url')
});
client.enableKeepAlive();
client.on('session:started', function () {
console.log(administrator + ' is sending presence');
client.joinRoom("architecture@groups.xxxx.xxx", 'Daemon');
setInterval(function () {client.sendPresence();console.log('daemon presence');},60000);
client.on('chat', function (msg) {
console.log(msg.body);
var reply = eliza.transform(msg.body);
client.sendMessage({
to: msg.from,
body: 'hello world' // 'You sent: ' + msg.body
});
});
client.on('groupchat', function (msg) {
console.log('group chat', msg.body);
});
});
client.on('session:end', function (result) {
console.info("daemon session ended, restarting");
setTimeout(function () {
daemonPresence();
}, 10000);
// callback(null, result);
});
client.on('session:error', function (error) {
console.err('xmpp error', error);
callback(error, null);
});
client.connect();
}
这是 XEP-0045 中定义的 XMPP 多用户聊天的性质。 XMPP MUC 房间是基于存在的。这意味着您需要在每次登录时将您的状态发送到 MUC。这是协议中定义的内容。
一些客户端通过将书签实现为 XML 私有存储来解决此问题,以存储客户端将在连接时自动加入的 MUC 房间列表,您可能需要查看此内容。
XMPP 标准基金会正在讨论构建新的 MUC 规范(又名 MUC 2),该规范不会与存在耦合。不过,这只是目前的讨论。
我希望 XMPP 房间的 bot 所有者一直在,但我一直从房间消失,必须重新加入。我必须怎么做才能保持我在房间里的存在?它是可配置的吗?我在 XEP-0045 中找不到答案。
http://xmpp.org/extensions/xep-0045.html
这是我的代码:
function daemonPresence(callback) {
var ElizaBot = require('./eliza');
var eliza = new ElizaBot();
var initial = eliza.getInitial();
var XMPP = require('stanza.io');
var administrator = 'metalaureate@' + config.get('xmpp.domain');
var client = XMPP.createClient({
jid: administrator,
password: 'password',
transport: 'bosh',
boshURL: config.get('xmpp.bosh_url')
});
client.enableKeepAlive();
client.on('session:started', function () {
console.log(administrator + ' is sending presence');
client.joinRoom("architecture@groups.xxxx.xxx", 'Daemon');
setInterval(function () {client.sendPresence();console.log('daemon presence');},60000);
client.on('chat', function (msg) {
console.log(msg.body);
var reply = eliza.transform(msg.body);
client.sendMessage({
to: msg.from,
body: 'hello world' // 'You sent: ' + msg.body
});
});
client.on('groupchat', function (msg) {
console.log('group chat', msg.body);
});
});
client.on('session:end', function (result) {
console.info("daemon session ended, restarting");
setTimeout(function () {
daemonPresence();
}, 10000);
// callback(null, result);
});
client.on('session:error', function (error) {
console.err('xmpp error', error);
callback(error, null);
});
client.connect();
}
这是 XEP-0045 中定义的 XMPP 多用户聊天的性质。 XMPP MUC 房间是基于存在的。这意味着您需要在每次登录时将您的状态发送到 MUC。这是协议中定义的内容。 一些客户端通过将书签实现为 XML 私有存储来解决此问题,以存储客户端将在连接时自动加入的 MUC 房间列表,您可能需要查看此内容。
XMPP 标准基金会正在讨论构建新的 MUC 规范(又名 MUC 2),该规范不会与存在耦合。不过,这只是目前的讨论。