Strophe addHandler не работает

Это актуальный вопрос для "Strophe.Connection.addHandler не работает, если вызвать Strophe.Connection.sendIQ", но это не помогает мне. Я пытаюсь запустить программу из книги "Программирование Wrox Professional XMPP с использованием JavaScript и jQuery Book", которая является совместным редактором.

$(document).bind('connected', function () {
$('#disconnect').removeAttr('disabled');

NetPad.connection.addHandler(NetPad.on_message, null, "message");

if (NetPad.collaborator) {
    NetPad.master = false;

    $('#status')
        .text('Checking feature support for ' + NetPad.collaborator + '.')
        .attr('class', 'try-collab');

    // check for feature support
    NetPad.connection.sendIQ(
        $iq({to: NetPad.collaborator, type: 'get'})
            .c('query', {xmlns: Strophe.NS.DISCO_INFO}),
        function (iq) {
        console.log(iq);
            var f = $(iq).find(
                'feature[var="' + NetPad.NS_NETPAD + '"]');

            if (f.length > 0) {
                $('#status')
                    .text('Establishing session with ' + 
                          NetPad.collaborator + '.')
                    .attr('class', 'try-collab');

                NetPad.connection.send(
                    $pres({to: NetPad.collaborator})
                        .c('collaborate', {xmlns: NetPad.NS_NETPAD}));
            } else {
                $('#status')
                    .text('Collaboration not supported with ' +
                          NetPad.collaborator + '.')
                    .attr('class', 'no-collab');

                NetPad.connection.disconnect();
            }
        });
} else {
    NetPad.master = true;

    $('#pad').removeAttr('disabled');

    // handle incoming discovery and collaboration requests

    **NetPad.connection.addHandler(NetPad.on_disco_info,
                                 Strophe.NS.DISCO_INFO, "iq", "get");**

    NetPad.connection.addHandler(NetPad.on_collaborate,
                                 NetPad.NS_NETPAD, "presence");
    NetPad.connection.addHandler(NetPad.on_unavailable,
                                 null, "presence");
}
});



on_disco_info: function (iq) {
  console.log("==> On_disco_info()...");
    NetPad.connection.sendIQ(
        $iq({to: $(iq).attr('from'),
             id: $(iq).attr('id'),
             type: "result"})
            .c('query', {xmlns: Strophe.NS.DISCO_INFO})
            .c('identity', {category: 'client',
                            type: 'pc'}).up()
            .c('feature', {'var': NetPad.NS_NETPAD}));

    return true;
},

Проблема в том, что NetPad.on_disco_info(iq) не запускается при установлении соединения с другим коллоборатором, хотя отправляется раздел iq. Я опустил остальные аргументы addHandler, чтобы получить все iq, но опять же ничего. Мой сервер - ejabberd. Пожалуйста, спросите, если что-то не понятно.

0 ответов

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