Обработка PEP с сервером Tigase - PullRequest
0 голосов
/ 27 декабря 2011

Изначально я использовал серверную часть openfire для моего веб-клиента чата. Но так как его pep не работал с кластеризацией, мне пришлось перейти на Tigase.

Чат отлично работает с tigase, я не дошел до кластерной части, но все еще застрял при запуске своих старых сервисов. Примечание. В своем веб-приложении я использую строфу.

Сейчас я пытаюсь понять, как заставить pep работать с tigase. для pep с openfire я просто использую плагин pep с strophe и подписываюсь на поток pep другого пользователя, например

myObj.connection.pep.subscribe(jid, node , 
    function( iq ){ console.log(' > on_pep_subscription to '+jid+' node '+node+' SUCCESS');console.log(iq)},
    function( iq ){ console.log(' > on_pep_subscription to '+jid+' node '+node+' FAIL');console.log(iq)},
    function (msg){/*handle callback here*/}

для публикации я использую эти:

myObj.connection.pep.publish('http://jabber.org/protocol/mood', newMood, 
    function( iq ){ 
        console.log('- on_pep_publish to node "http://jabber.org/protocol/mood" SUCCESS'); console.log(iq);}, 
    function( iq ){ 
        console.log('- on_pep_publish to node "http://jabber.org/protocol/mood" FAIL');
        console.log(iq); alert('failed to publish mood pls try again');}); 

Раньше это нормально работало с openfire, но одно большое отличие состоит в том, что с tigase я не получаю подписку об успешном обратном вызове. когда я публикую пользователей в моем списке автоматически получаю мой поток (что хорошо). Но проблема в том, что я не могу указать обработчик для этого события, используя strophe.

Если у меня 2 пользователя cef и miko, а мой домен - mydomain. Когда я публикую настроение с Мико, я получаю следующее на cef:

<body xmpp:version="1.0" xmlns:xmpp="urn:xmpp:xbosh" secure="true" xmlns:stream="http://etherx.jabber.org/streams" xmlns="http://jabber.org/protocol/httpbind" ack="2545114322" from="mydomain">
<message id="2939:sendIQ" to="cef@mydomain" type="headline" from="miko@mydomain/tigase-15">
<event xmlns="http://jabber.org/protocol/pubsub#event">
<items node="http://jabber.org/protocol/mood">
<item>
<status>sad</status>
</item>
</items>
</event>
</message>
</body>

Я пытался создать обработчик самостоятельно, как и в реестре.

myObj.connection.addHandler(function(m){console.info('IQ WAAHAHAHAH');console.log(m);},null,"iq");
myObj.connection.addHandler(function(m){console.info('MESSAGE WAAHAHAHAH');console.log(m);},null,"message");
myObj.connection.addHandler(function(m){console.info('PRESENCE WAAHAHAHAH');console.log(m);},null,"presence");

для этого конкретного события ни один из моих обработчиков не может с ними справиться, но с помощью firebug и google inspect я вижу запись в сети с указанными строфами.

но, похоже, не работает. У кого-нибудь есть идеи?

...