微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果接收者用户离线,则通过 Ejabberd Api 的 send_message 端点发送时未收到消息

如何解决如果接收者用户离线,则通过 Ejabberd Api 的 send_message 端点发送时未收到消息

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

我的意思是:

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

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

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

解决方法

我无法重现那个问题。

我是这样测试的:

  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 调用方法中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?