如何使用 simple-xmpp/node-xmpp 获得 Jabber 用户的名册?

Posted

技术标签:

【中文标题】如何使用 simple-xmpp/node-xmpp 获得 Jabber 用户的名册?【英文标题】:How do can you get the roster of a Jabber user with simple-xmpp/node-xmpp? 【发布时间】:2013-10-15 11:47:59 【问题描述】:

我正在使用“simple-xmpp”模块,我正在尝试在登录后获取 Jabber 用户的名册。连接到 Jabber 服务器(在我的情况下为 Openfire)并发送消息就可以了.当我尝试执行 xmpp.getRoster() 调用时,它只会返回“未定义”。

这是我的代码。我想我应该得到某种 JSON 对象。我究竟做错了什么?谢谢。

var config = require('../lib/config');
var xmpp = require('simple-xmpp');

xmpp.on('online', function() 
  console.log('Yes, I\'m connected!');

  console.log(xmpp.getRoster());
);

xmpp.on('error', function(err) 
   console.error(err);
);

xmpp.on('chat', function(from, message) 
console.log(from + " said: " + message);
);


exports.connect = function (username, password) 
   xmpp.connect(
       jid         : username,
       password    : password,
       host        : config.jabberHost,
       port        : config.jabberPort
   );
;

【问题讨论】:

【参考方案1】:

我知道这是一个老问题,但我偶然发现它正在寻找其他东西。

我通过使用 node-xmpp-client 和来自 node-xmpp-core 的 ltx 并发送以下内容来做到这一点:

client.send(new ltx.Element('iq', from: 'user@domain.com', type:'get', id:'roster_1') .c('query', xmlns: 'jabber:iq:roster' ).t().up() ) )

【讨论】:

以上是关于如何使用 simple-xmpp/node-xmpp 获得 Jabber 用户的名册?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?