最初,我为我的基于 Web 的聊天客户端使用了一个 openfire 后端。但由于它的 pep 不适用于集群,我不得不迁移到 tigase。
聊天与 tigase 配合得很好,我还没有进入集群部分,但仍然坚持让我的旧服务启动。注意:我在我的网络应用程序中使用 strophe。
我现在正试图弄清楚如何让 pep 与 tigase 一起工作。对于带有 openfire 的 pep,我只是使用带有 strophe 的 pep 插件并像这样订阅另一个用户的 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。当我发布与 miko 的心情时,我在 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");
对于这个特定的事件,我的处理程序都无法处理它们,但是通过萤火虫和谷歌的检查,我在网络中看到一个带有上述节的条目。
但这似乎不起作用。有人有什么主意吗?