我已经使用我的小型移动应用聊天程序设置并实现了 ejabberd 服务器。还为消息传递状态实现了 XEP-184。
但是我遇到了一个问题,我的应用程序如何知道我的消息是否确实已到达 ejabberd 服务器?
我的场景:我走进一个连接信号较弱的区域,信号勉强足以保持连接活跃,但经常超时。我试图发送一条消息,我怎么可能确认消息是否到达服务器?
希望我对我的问题足够清楚。提前致谢!
我已经使用我的小型移动应用聊天程序设置并实现了 ejabberd 服务器。还为消息传递状态实现了 XEP-184。
但是我遇到了一个问题,我的应用程序如何知道我的消息是否确实已到达 ejabberd 服务器?
我的场景:我走进一个连接信号较弱的区域,信号勉强足以保持连接活跃,但经常超时。我试图发送一条消息,我怎么可能确认消息是否到达服务器?
希望我对我的问题足够清楚。提前致谢!
我为此编写了一个 ejabberd mod,您可以在以下位置找到:
一种可能的方法是实施XEP-0198 Stream Management。流管理是最新 ejabberd 版本中的标准功能。
有了这个,客户端可以要求服务器保留收到的节的计数,并在感兴趣时要求服务器确认收到的节的数量。
然后,客户可以了解是否收到了一个或多个节。
这可以对每个单独的节进行:客户端要求对最后发送的节进行 ack,并期望来自服务器的 ACK。
理论上,您可以只实现“基本确认方案”——不需要完整的 XEP(包括流恢复)。