问题描述
我正在实现聊天应用程序,但我不明白为什么当我使用 ejabberd 的模块 Send_message 时,接收者看不到消息。
我的意思是:
我在客户端使用 smack 并实现了传入消息的侦听器。但我没有看到带有消息扩展的传入数据包
解决方法
我无法重现那个问题。
我是这样测试的:
-
安装ejabberd 21.04,默认配置,启动
-
注册账号 user1@localhost 和 user2@localhost
-
使用 shell 发送消息(无需设置 API):
❯ ejabberdctl send_message chat user1@localhost user2@localhost somesubject 某人
-
然后使用一个好的桌面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 调用方法中。