Обмен IQ XMPP между клиентами с Strophe - PullRequest
2 голосов
/ 26 марта 2012

Итак, у меня запущены 2 браузера с обоими страницами. На этой странице вы можете войти на сервер с учетной записью.

Соединение построено со Strophe. И все это HTML и JavaScript.

Теперь мне уже удалось построить чат (между двумя браузерами, каждый из которых вошел в систему со своим пользователем). И это работает отлично.

То, чего я хочу достичь сейчас, - это отправить IQ одному пользователю от другого. Оба говорят в строке состояния, что они получают IQ (один как «получил запрос», другой как «получил результат»)

Теперь я создаю свой iq с помощью:

    var iq = $iq({type: 'get', to: this.receiver}).c('query', {xmlns: 'http://jabber.org/protocol/pubsub#retrieve-subscriptions'});
    XmppObject.xmpp.connection.sendIQ(iq);

Это установлено в функции, которая может быть вызвана нажатием кнопки. Слушатель построен следующим образом:

    $(XmppObject.xmpp).bind("iq", function(event, data){
    addToStatus('Received an iq: \n');
    handlePong(data.iq);
});

С ручкойПонг как:

    function handlePong(msg)
{
    var objMsg = $(msg);
    var from = objMsg.attr('from');
    var type = objMsg.attr('type');
    var id = objMsg.attr('id');
    var text = 'Received iq from ' + from + ' with id ' + id + ' and type ' + type + '\n\n';
    addToStatus(text);
}

Теперь, когда client1 отправляет IQ на client2, это результат:

Client1: Received iq from client2@domain with id pingPong and type result

Client2:

Теперь есть ли способ отобразить в статусе client2, что он получил первоначальный запрос?

1 Ответ

3 голосов
/ 28 марта 2012

Вам понадобится:

  • Создайте iq с вашим собственным пространством имен, вы не можете просто перерабатывать существующие. Это будет работать, но это совершенно не так.
  • Добавьте обработчик соединения Strophe для обработки этого типа, если iq. Вы не делаете это, используя привязку jQuery. Вы должны использовать addHandler в соединении.

Простейшим примером, который я могу найти, является именно ping реализация плагинов strophe, см. https://github.com/metajack/strophejs-plugins/blob/master/ping/strophe.ping.js

...