2012-12-28 86 views
0

我正在使用Strophe JS & Openfire來做簡單的pubsub。Strophe JS訂閱回調只被調用一次

設置:

  • 操作系統:Windows 7
  • 的Openfire:3.7.0
  • 的strophe JS,的strophe插件發佈訂閱。
  • 的Tomcat 6:服務網頁

使用案例:


兩個瀏​​覽器窗口有兩個不同的用戶會話(XMPP會話)

火狐(用戶1)---- >發行商
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>']); 

我期待這兩個由發佈者(火狐)發佈的消息應該得到印鉻(用戶)控制檯上。但它只是打印第一個,看起來像Subscribe-callback只被調用一次。

回答

3

我想出訂閱回撥的問題。 Strophe JS插件(pubsub)需要從回調返回'真',如果有興趣獲得更多的觸發器。

因此改變回調以返回真實工作。

代碼更改上面的代碼片段:

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