1

私は Strophe JS と Openfire を使用して単純な pubsub を実行しています。

設定 :

  • OS: Windows7
  • たき火: 3.7.0
  • Strophe JS、pubsub 用の Strophe プラグイン。
  • Tomcat 6: Web ページの提供

使用事例:


2 つの異なるユーザー セッション (xmpp セッション) を持つ 2 つのブラウザー ウィンドウ

Firefox(user1)---->パブリッシャー
Chrome(user2)---->サブスクライバー

コード:

 //XConn represents Strophe Connection
//creating PUBSUB NODE (Firefox)
XConn.pubsub.createNode(
   XConn.jid,
   'pubsub.localhost',
   'PUBSUB_NODE',
   {},
    function (){ 
    }
 );

 //Adding subscriber to created node  (Chrome)
  XConn.pubsub.subscribe(
  XConn.jid,
  'pubsub.localhost',
  'PUBSUB_NODE',
  [],
  function(msg){ console.log(msg);},
  function(sub){ }
   );

   //publishing item to node (Firefox)
   XConn.pubsub.publish(XConn.jid,'pubsub.localhost','PUBSUB_NODE',[ '<item><book xmlns="pubsub:test:book"><title>Book1</title></book></item>']);
  XConn.pubsub.publish(XConn.jid,'pubsub.localhost','PUBSUB_NODE',[ '<item><book    xmlns="pubsub:test:book"><title>Book2</title></book></item>']);

パブリッシャー (firefox) によって公開された両方のメッセージがクロム (サブスクライバー) コンソールに出力されることを期待しています。しかし、それは最初のものを出力するだけで、Subscribe-callback が 1 回だけ呼び出されるように見えます。

4

1 に答える 1

4

サブスクリプションのコールバックの問題がわかりました。Strophe JS プラグイン (pubsub) は、より多くのトリガーを取得する場合、コールバックから「true」を返す必要があります。

そのため、コールバックを true を返すように変更するとうまくいきました。

上記のスニペットへのコード変更:

 //Adding subscriber to created node  (Chrome)
 XConn.pubsub.subscribe(
    XConn.jid,
   'pubsub.localhost',
   'PUBSUB_NODE',
    [],
    function(msg){ console.log(msg); return true; },
    function(sub){ return true;}
 );
于 2012-12-28T20:57:11.320 に答える