簡體   English   中英

使用 node-xmpp 讀取 XMPP 控制台

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM