在 ejabberd 服务器上启用 PEP

Posted

技术标签:

【中文标题】在 ejabberd 服务器上启用 PEP【英文标题】:Enabling PEP on ejabberd server 【发布时间】:2017-04-23 04:22:37 【问题描述】:

我正在使用 Electron 框架和 node-xmpp 模块创建一个聊天应用程序来进行 XMPP 通信。

除了使个人赛事协议发挥作用之外,我几乎完成了所有工作。专门向名册发送一个新昵称。

当我发送 PEP 节时

<iq from='test@localhost' type='set' id='pub1'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <publish node='http://jabber.org/protocol/nick'>
      <item>
        <nick xmlns='http://jabber.org/protocol/nick'>I am a test user</nick>
      </item>
    </publish>
  </pubsub>
</iq>

我得到一个响应 IQ 节:

<iq from="test@localhost" type="result" to="test@localhost/testapp" id="pub1">
  <pubsub xmlns="http://jabber.org/protocol/pubsub">
    <publish node="http://jabber.org/protocol/nick">
      <item id="5D4E0BB8EB3C6"/>
    </publish>
  </pubsub>
</iq>

现在,根据XEP-172 example 6,我应该会收到一条带有昵称的消息,该昵称也会发送给我的所有联系人。它应该是这样的:

<message from='test@localhost' to='otheruser@localhost' type='headline' id='foo'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='http://jabber.org/protocol/nick'>
      <item>
        <nick xmlns='http://jabber.org/protocol/nick'>I am a test user</nick>
      </item>
    </items>
  </event>
  <addresses xmlns='http://jabber.org/protocol/address'>
    <address type='replyto' jid='test@localhost/chatapp'/>
  </addresses>
</message>

问题是我没有收到任何消息给用户名册中的其他联系人。甚至对我自己也不行。

是否缺少任何步骤?我应该包括任何额外的节或信息吗?

谢谢!

【问题讨论】:

【参考方案1】:

如果您想接收其他用户的昵称事件,您应该将http://jabber.org/protocol/nick+notify 字符串包含到您的Entity Capabilities 列表中。

详情请见Filtered notifications。

【讨论】:

以上是关于在 ejabberd 服务器上启用 PEP的主要内容,如果未能解决你的问题,请参考以下文章

安排任务每天在 eJabberd 服务器上运行?

在 ejabberd 服务器中启用流管理

如何在 Ejabberd 16.09-4 Debian9 上启用 omemo?

ejabberd-18.12.1 上 mod_ping 的正确配置是啥?

配置 ejabberd 以用作游戏服务器

Ejabberd Oauth:访问被拒绝