如何知道我的消息是不是成功传送到 XMPP 服务器?

Posted

技术标签:

【中文标题】如何知道我的消息是不是成功传送到 XMPP 服务器?【英文标题】:How to know if my message is successfully delivered to a XMPP server?如何知道我的消息是否成功传送到 XMPP 服务器? 【发布时间】:2014-10-21 19:22:31 【问题描述】:

我在这里使用 Openfire 和 ios XMPPFramework。我知道 XEP-0184 的存在,但这不是我要问的。我想知道Openfire服务器是否成功接收到我的消息(我的消息发送成功),到目前为止,当我向openfire服务器发送消息时,服务器没有任何响应,所以我不知道消息是否成功通过与否。擅长XMPPFramework的人可以给我一些示例代码:

    服务器收到消息时要求服务器返回回执 处理从服务器发回的收据

我的直觉告诉我 id 属性可能是我在这里寻找的,但我在网上找不到相关信息。

感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

唯一的标准化解决方案是XEP-198: Stream Management,它为客户端和服务器(以及 s2s)之间的节提供流级别的确认。 Openfire does not (yet) support Stream Management: OF-446.

除此之外,XMPP 没有(标准化的)收据方法,一旦他收到该节,服务器就会向客户端发送收据。请注意,这与提供端到端收据的XEP-184: Message Delivery Receipts 不同。

【讨论】:

感谢您的回答,我想我必须编写一些自定义插件来模仿 xep 198。我现在会接受解决方案。 @Alex。你成功使用XEP198了吗?你用过这个piece of Code from XMPPFramework for iOS 我没有使用 xep 198,因为我的服务器不支持它。

以上是关于如何知道我的消息是不是成功传送到 XMPP 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中请求服务器接收 xmpp 消息

xmpp xml基本语义

我们如何确定 XMPP 消息何时传递?

我如何从客户端知道一个帐户是不是存在于 XMPP 服务器中?

检测用户登录/注销 xmpp google app engine

如何使用 Spring Integration 发送 gcm xmpp 消息?