2

ユーザーノードに接続するためにPEP プラグイン (ここにあります: https://github.com/flosse/strophejs-plugins/blob/master/pep/strophe.pep.js ) を使用していますが、問題が発生しています。接続されたブロックが呼び出されたら、次のことを行います。

XMPP.connection.send($pres());
XMPP.getRoster();
XMPP.connection.addHandler(XMPP.getPresence, null, "presence");

アクセスしようとしているノードの JID からサブスクライブされた返信を受け取った場合 (双方向のサブスクリプションがある場合)、次のコマンドを実行します。

XMPP.connection.pep.subscribe(JID, node,
function(){console.log("SUCCESS: Successfully subscribed to " + JID + "'s node " + node);},
function(){console.log("FAILURE: Unsuccessfully subscribed to " + JID + "'s node " + node);},
XMPP.onMessage,
true);

JID とノードの両方が有効な場合。コンソールに SUCCESS が表示されますが、イベント ハンドラ onMessage が正しくアタッチされていません。デバッグが設定されているので、受信スタンザと送信スタンザを確認でき、ノードから何も受信しません (一定の間隔で投稿されていることがわかっています)。なぜこれが起こっているのかよくわかりません。

接続されたブロックからすべてを削除し、Web コンソールから手動で双方向サブスクリプションを作成し、空のブロックに XMPP.connection.pep.subscribe を追加すると、正常に動作します。

複数の PEP および pubsub プラグインを試しましたが、同じ動作が得られます。私は障害物にいるので、誰の意見も大歓迎です! ありがとう!

4

1 に答える 1

0

どのサーバーを使用していますか?

通常の暗黙的な PEP サブスクリプションではなく、明示的なサブスクリプションを実行しようとしているようです。多くのサーバーは、キャップ情報に追加[node URI]+notifyする暗黙的なサブスクリプションのみをサポートします。

また、一部のサーバーには、サブスクリプション リクエストを承認するときにサーバーが現在のプレゼンスを正しく提供するのではなく、サブスクライブしたばかりの人にプレゼンスを明示的に送信する必要があるというバグがありました。このバグは、暗黙的なサブスクリプションを妨げます。

于 2011-07-15T06:01:40.593 に答える