XMPP MUC как навсегда присоединиться к комнате

Я хочу, чтобы владелец бота в комнате XMPP постоянно присутствовал, но я продолжаю исчезать из комнаты и должен снова присоединиться. Что я должен сделать, чтобы сохранить свое присутствие в комнате? Это настраивается? Я не могу найти ответ в 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();

}

1 ответ

Решение

Это характер многопользовательского чата XMPP, как определено в XEP-0045. Комната XMPP MUC основана на присутствии. Это означает, что вам нужно отправлять свое присутствие в MUC при каждом входе в систему. Это то, что определено в протоколе. Некоторые клиенты обходят это, внедряя закладки в качестве частного хранилища XML для хранения списка MUC-комнат, которые клиент будет автоматически подключать при подключении. Возможно, вы захотите посмотреть на это.

Фонд стандартов XMPP обсуждает создание новой спецификации MUC (также известной как MUC 2), которая не будет связана с присутствием. Тем не менее, это просто обсуждение на данный момент.

Другие вопросы по тегам