0

我正在实现聊天应用程序,但我不明白为什么当我使用ejabberd 的模块Send_message时,接收者看不到消息。

我是说 :

  • 用户 B 离线,用户 A 通过 https 使用 ejabberd api 发送消息。**

  • 当用户 B 上线时,他什么也看不到 ***

我在客户端使用 smack 并实现了传入消息的侦听器。但我没有看到带有消息扩展名的传入数据包

4

1 回答 1

0

我无法重现该问题。

这就是我测试它的方式:

  1. 安装ejabberd 21.04,默认配置,启动

  2. 注册账户 user1@localhost 和 user2@localhost

  3. 使用 shell 发送消息(无需设置 API):

    ❯ ejabberdctl send_message chat user1@localhost user2@localhost somesubject 某人

  4. 然后使用一个好的桌面 Jabber 客户端登录到账户 user2@localhost,例如 Gajim, Psi, Tkabber, ... 登录后,客户端收到

<message to='user2@localhost'
from='user1@localhost'
type='chat'
id='13012384106679348680'>
  <archived by='user2@localhost'
id='1621974627878891'
xmlns='urn:xmpp:mam:tmp'/>
  <stanza-id by='user2@localhost'
id='1621974627878891'
xmlns='urn:xmpp:sid:0'/>
  <delay from='localhost'
stamp='2021-05-25T20:30:27.879994Z'
xmlns='urn:xmpp:delay'>Offline storage</delay>
  <body>somebody</body>
  <subject>somesubject</subject>
</message>

你必须尝试的事情:

  • 您的客户必须登录,以积极的优先级发送出席信息,才能接收离线消息。
  • 尝试使用 Jabber 客户端接收消息,可能问题出在您的客户端。
  • 并尝试使用 ejabberdctl 脚本。也许问题出在您的 API 调用方法中。
于 2021-05-25T20:35:05.203 回答