1

我正在使用 Strophe JS 和 Openfire 来做简单的 pubsub。

设置 :

  • 操作系统:Windows 7
  • 开火:3.7.0
  • Strophe JS,用于 pubsub 的 Strophe 插件。
  • Tomcat 6:服务网页

用例:


具有两个不同用户会话的两个浏览器窗口(xmpp 会话)

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)发布的两个消息都应该打印在 chrome(订阅者)控制台上。但它只打印第一个,看起来订阅回调只被调用一次。

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 回答