[英]Reading XMPP console using node-xmpp
我在工作中遇到問題,但找不到解決方案。 我知道 StackOverflow 問題不是針對文檔的,但顯然 node-xmpp 的文檔相當......“輕量級”。
我的問題如下:
我有一個連接到服務器的 xmpp 客戶端。 該服務器用於在調用 REST API 時向我的客戶端發送通知。 基本上,如果服務器確定請求看起來正常,則 HTTP 請求將獲得 202 代碼,並將通過 XMPP 協議返回完整的 XML 答案。
對於那些可能對這個特定問題有一些見解的人:我正在嘗試使用 Cisco Finesse API 通知系統。
我設法使用 Pidgin 查看這些通知,但查看它們的唯一方法是打開 XMPP 控制台(而不是常規聊天流)。
現在我設法使用 node-xmpp 登錄到此 XMPP 服務器,但我無法讀取通知。 我試圖偵聽“數據”和“節”事件,但它從未觸發這些事件。
這是代碼摘錄:
const XMPP = require("node-xmpp-client");
let xmpp_client = new XMPP({
jid: json_message.login + '@abc.inc',
password: json_message.pwd,
host: CONF.FINESSE_SERVER.replace("http://", ""),
port: 5222
});
console.log("jid: " + json_message.login + '@abc.inc');
console.log("password: " + json_message.pwd);
console.log("host: " + CONF.FINESSE_SERVER.replace("http://", ""));
console.log("post: 5222");
xmpp_client.on("online", function(){
console.log("online");
});
xmpp_client.on('stanza', function(stanza) {
console.log("xmpp::");
console.log('Incoming stanza: ');
console.log(stanza);
});
xmpp_client.connection.on("data", function(data) {
console.log(data.toString("utf-8"));
});
我現在有點困惑,因為 Cisco 的文檔沒有詳細介紹 JavaScript,而且 node-xmpp 文檔非常簡短。
歡迎任何幫助,提前感謝人們! \\o/
您需要發送一個presence
節並訂閱您想要接收的事件。 例子:
const xmppXml = require('@xmpp/xml')
, xmppClient = require('node-xmpp-client')
;
let host = YOUR_HOST;
let fqdn = YOUR_FQDN;
let username = YOUR_USERNAME;
let password = YOUR_PASSWORD;
let jid = username + '@' + fqdn;
let xmpp_client = new xmppClient({
jid: jid,
password: password,
host: host,
port: 5222
});
xmpp_client.connection.on('data', (data) => {
console.log(data.toString('utf-8'));
});
xmpp_client.on('online', () => {
xmpp_client.send(new xmppClient.Stanza('presence', { }));
// Subscribe to REAL-TIME events.
// REFERENCE: https://developer.cisco.com/media/finesseDevGuide/CFIN_RF_S7A50AC1_00_subscription-management.html
let subscribe = xmppXml.createStanza('subscribe', {
xmlns: 'http://jabber.org/protocol/pubsub',
node : '/finesse/api/User/' + username,
jid : jid,
});
let pubsub = xmppXml.createStanza('pubsub', {
xmlns: 'http://jabber.org/protocol/pubsub',
});
let iq = xmppXml.createStanza('iq', {
to : 'pubsub.' + fqdn,
from: jid,
type: 'set',
});
iq.cnode(pubsub).cnode(subscribe);
let msg = iq.toString();
xmpp_client.send(msg);
});
嘗試添加
xmpp_client.on('error', console.error)
獲取有關發生的任何錯誤的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.