Изначально я использовал серверную часть 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 я вижу запись в сети с указанными строфами.
но, похоже, не работает.
У кого-нибудь есть идеи?