Получайте подписки с помощью плагина Strophe.js Roster и Ejabberd

Я использую плагин Strophe.js Roster с Ejabberd в качестве XMPP-сервера. Когда я пользуюсь Adium или другими XMPP-клиентами, я могу добавить другие учетные записи в свой список. Когда я отправляю приглашение, другой аккаунт получает присутствие с type=='subscribe',

Wit Strophe.js Ростер, я никогда не получаю никакого присутствия сtype == 'subscribe'! Я перепробовал все... Я добавил несколько обработчиков... Я "отфильтровал" а также ...

Вот мой код:

HTML включает

    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js'></script>
    <script src='../strophe.js'></script>
    <script src="../strophe.muc.js"></script>
    <script src="../strophe.register.js"></script>
    <script src="../strophe.roster.js"></script>
    <script src='my-code.js'></script>

мой-code.js

var jid;
$(document).ready(function () {
    connection = new Strophe.Connection(BOSH_SERVICE, {'keepalive': true});
    //connection.rawInput = rawInput;
    //connection.rawOutput = rawOutput;

    connection.addHandler(onPresence, null, 'presence', null, null, null);
    connection.roster.registerRequestCallback(onRequest);


    // Manage connection
    try {
        $('#connect').get(0).value = 'disconnect';
        connection.restore(null, onRegister);
    } catch(e) {
        if (e.name !== "StropheSessionError") { throw(e); }
        $('#connect').get(0).value = 'connect';
    }
    $('#connect').bind('click', function () {
       var button = $('#connect').get(0);
       if (button.value == 'connect') {
           button.value = 'disconnect';

           jid = $('#jid').get(0).value;
           connection.connect(jid, $('#pass').get(0).value, onConnect, 10);
       } else {
           button.value = 'connect';
           connection.disconnect();
       }
   });
});


function onPresence(stanza)
{
    log("PRESENCE");
    console.log(stanza);

    return true;
}

function onRequest(req) {

    console.log("Request");
    console.log(req);

    return true;
}

Я что-то пропустил?

1 ответ

Решение

Я решил свою проблему!

Мы должны отправить присутствие, когда статус соединения Strophe.Status.CONNECTING

function onConnect(status)
{
    if (status == Strophe.Status.CONNECTING) {
        log('Strophe is connecting.');
    } else if (status == Strophe.Status.CONNFAIL) {
        log('Strophe failed to connect.');
    } else if (status == Strophe.Status.DISCONNECTING) {
        log('Strophe is disconnecting.');
    } else if (status == Strophe.Status.DISCONNECTED) {
        log('Strophe is disconnected.');
    } else if (status == Strophe.Status.CONNECTED) {
        log('Strophe is connected.');


        // Send a presence to the server
        connection.send($pres().tree());

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