如何从node-xmpp请求获得响应?

时间:2014-05-14 11:23:35

标签: javascript node.js websocket xmpp ejabberd

我学会了使用node-xmpp库向XMPPserver发出请求。现在我可以在XMPP扩展文档中提到请求。但现在我想获得每个请求的回调响应(尤其是XML响应)。

这里我使用以下代码向另一个用户发出请求订阅(好友请求)

var net = require("net");
var xmpp = require('node-xmpp');

var cl = new xmpp.Client({ jid: "one@localhost",  password: "comet123$" })

cl.addListener('online', function(data) {
    console.log('Connected as ' + data.jid.user + '@' + data.jid.domain + '/' + data.jid.resource)

//making subscription
    var stanza = new xmpp.Element('presence',{
                      to: "hai@localhost",
                      from: "one@localhost",
                      type: "subscribe",
                             }).up
// making request
        cl.send(stanza);

    // nodejs has nothing left to do and will exit
    cl.end()
})

我想知道如何获得回复结果。

我试着使用回调功能,就像这样,

cl.send(stanza, function(result){
    console.log(result);
});

也喜欢这个

var result = cl.send(stanza);

仅返回true,

所以有人可以告诉我如何通过使用node-xmpp libarary获取我们所做的请求的回调结果

2 个答案:

答案 0 :(得分:0)

XMPP消息没有回调或返回。您必须设置一个事件监听器来接收从服务器返回的消息。添加:

cl.on('stanza', function(stanza){
  // Do something with the stanza

  // If you want to end after the first message you get back, move this here
  cl.end();
});

答案 1 :(得分:0)

您可以从连接中获取原始数据

cl.connection.on("data", function (data) {
    console.log('data', data.toString('utf8'));
});