如何在 NodeJS 包中构造 XMPP 的订阅消息?

Posted

技术标签:

【中文标题】如何在 NodeJS 包中构造 XMPP 的订阅消息?【英文标题】:How to construct a subscription message for XMPP in NodeJS package? 【发布时间】:2015-02-06 04:00:55 【问题描述】:

我正在使用node-xmpp-client 包连接到 XMPP 服务。当服务从某个外部源接收消息时,它会发布消息。我的目标:

    连接到服务 获得身份验证 订阅一些我感兴趣的节点。(节点名称已知) 从节点接收节以了解新消息已进入并处理它。

我在这里引用sample code。

我已设法使用以下代码连接到该服务。这会自动向服务器验证我的身份吗?我没有收到任何“身份验证”事件。如果没有,我如何明确请求身份验证?

var client = new xmpp.Client(
    jid: 'someuser@somedomain.com',
    password: 'somepassword',
    host:'somehost',
    port:5222
)

接下来,如何订阅发布者节点?我应该做一个 client.send(new xmpp.Message(..)) 吗?如果是,应该如何构造 xmpp.Message ?我可以在 XMPP 的网站上看到 XMPP 订阅 iq,但很难将其映射回 node-xmpp 的 api。

<iq type='set'
    from='francisco@denmark.lit/barracks'
    to='pubsub.shakespeare.lit'
    id='sub1'>
    <pubsub xmlns='http://jabber.org/protocol/pubsub'>
        <subscribe
            node='princely_musings'
            jid='francisco@denmark.lit'/>
    </pubsub>
</iq>

【问题讨论】:

【参考方案1】:

可能最容易了解我是如何为 xmpp-ftw-pubsub https://github.com/xmpp-ftw/xmpp-ftw-pubsub/blob/master/lib/pubsub.js#L111-L137 做到这一点的

【讨论】:

此外,您指向的示例是 node-xmpp-server + node-xmpp-client 示例。您只需要客户端位和适当的 xmpp 服务器(例如 Prosody)。

以上是关于如何在 NodeJS 包中构造 XMPP 的订阅消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在nodejs的xmpp服务器中传递动态聊天ID

基于XMPP的即时通信系统的建立

如何创建nodejs xmpp服务器和android xmpp客户端

如何在名册中添加联系人而不在 xmpp 聊天中发送和接受订阅请求

当用户订阅机器人时,应该如何处理发送 xmpp 欢迎消息(一般而言)

xmpp strophe 用户注销时接收通知订阅