もともと、私は Web ベースのチャット クライアントに openfire バックエンドを使用していました。しかし、その pep はクラスタリングで機能しなかったため、tigase に移行する必要がありました。
チャットは tigase で正常に動作します。クラスタリングの部分にはまだ行っていませんが、古いサービスを立ち上げるのにまだ苦労しています。注: Web アプリで 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 で問題なく動作していましたが、大きな違いの 1 つは、tigase ではコールバック成功のサブスクリプションを取得できないことです。名簿にユーザーを公開すると、自動的にストリームが取得されます (これは良いことです)。しかし問題は、strophe を使用してこのイベントのハンドラーを指定できないことです。
cef と miko の 2 人のユーザーがいて、ドメインが 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");
この特定のイベントでは、ハンドラーのどれもそれらを処理できませんが、firebug と Google の検査を使用すると、前述のスタンザを含むエントリがネットワークに表示されます。
しかし、うまくいかないようです。誰にもアイデアはありますか?