2014-10-05 61 views
0

我需要在服务器端验证Openfire XMPP会话,并将会话传递给strophe.js。但是,我找不到可用的预先绑定的库。Node.js解决方案用于XMPP BOSH预绑定以返回SID和RID

我一直使用的https://github.com/node-xmpp/node-xmpp-client维护者,但我们没能解决好以下几个:

var XMPP = require('node-xmpp-client') 


var prebind = new XMPP({ 
    jid: '[email protected]', 
    password: 'holonarchy', 
    wait: 60, 
    bosh: { 
     url: 'http://localhost:7070/http-bind/', 
     prebind: function(error, data) { 
      if (error) throw new Error(error); 
      console.log(data); 
      return data 
      /* 
       data.sid 
       data.rid 
      */ 
     } 
    } 
}) 

prebind.on('online', function() { console.log('Connected') }); 

我使用Wireshark来验证正确节越来越发送到我的BOSH端点,并且Openfire以正确的响应返回,但模块从不返回回调。

发送:

接收:

<body xmlns="http://jabber.org/protocol/httpbind" xmlns:stream="http://etherx.jabber.org/streams" from="localhost" authid="8bdd62a3" sid="8bdd62a3" secure="true" requests="2" inactivity="30" polling="5" wait="10" hold="1" ack="1836153693" maxpause="300" ver="1.6"> 

任何有任何变通办法或了解其他节点库,可以做预绑定?

回答

0

我希望这个链接将帮助您请参考:https://github.com/node-xmpp/node-xmpp-client/issues/77

var XMPP = require('node-xmpp-client'); 
    var prebind = new XMPP({ 
     jid: '[email protected]', 
     password: 'xxx', 
     preferred: 'PLAIN', 
     wait: 10, 
     bosh: { 
      url: 'http://localhost:5280/http-bind/', 
      prebind: function (error, data) { 
       if (error) throw new Error(error); 
       data.jid = '[email protected]'; 
       console.log(data); 
       **return res.send(data);** 
      } 
     }, 
     reconnect: true 

    });