轻量级应用程序级别确认

Lightweight application level acknowledgement

什么是经过验证的轻量级应用程序级方法来保证消息的传递?我已经阅读了一些关于使用序列号并确认收到这些序列号的文章,但可能有更好的方法吗?传输目前是 tcp,但这可能会改变。

我可以举个例子说明 XMPP 协议是如何工作的。

移动应用使用 TCP 作为其传输方式,在某些情况下也可能会丢失消息(例如连接问题等)

所以他们想出了一个单独的 XEP,称为 Stream Management https://xmpp.org/extensions/xep-0198.html

双方交换额外的简单包:ra。 完整流程如下所示:

<!-- User A sends a message to User B -->
<message from='userA@example.net/churchyard'
     to='userB@example.com'
     xml:lang='en'>
  <body>Hello</body>
</message>


<!-- then User A requests an acknowledgment from User B whether he received a message or not -->
<r xmlns='urn:xmpp:sm:3'/>

<!-- User B answeres with an acknowledgment package and a count how many packages he received -->
<a xmlns='urn:xmpp:sm:3' h='1'/>

所以这里没有任何神奇的东西 - 它只是交换了额外的数据以确保它全部正确传递。我想你可以采用类似的方式。