【问题标题】:Strophe JS subscribe callback gets called only onceStrophe JS 订阅回调只被调用一次
【发布时间】:2012-12-13 23:58:39
【问题描述】:

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

设置:

  • 操作系统:Windows 7
  • Openfire: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(订阅者)控制台上。但它只打印第一个,看起来订阅回调只被调用一次。

【问题讨论】:

    标签: xmpp publish-subscribe openfire strophe


    【解决方案1】:

    我发现订阅回调的问题。 如果有兴趣获得更多触发器,Strophe JS 插件(pubsub)需要从回调中返回“true”。

    因此将回调更改为返回 true 是可行的。

    代码改成上面的sn-p:

     //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;}
     );
    

    【讨论】:

      猜你喜欢
      • 2017-10-31
      • 2018-10-01
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      相关资源
      最近更新 更多