轻量级应用程序级别确认
Lightweight application level acknowledgement
什么是经过验证的轻量级应用程序级方法来保证消息的传递?我已经阅读了一些关于使用序列号并确认收到这些序列号的文章,但可能有更好的方法吗?传输目前是 tcp,但这可能会改变。
我可以举个例子说明 XMPP 协议是如何工作的。
移动应用使用 TCP 作为其传输方式,在某些情况下也可能会丢失消息(例如连接问题等)
所以他们想出了一个单独的 XEP,称为 Stream Management https://xmpp.org/extensions/xep-0198.html
双方交换额外的简单包:r
和a
。
完整流程如下所示:
<!-- 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'/>
所以这里没有任何神奇的东西 - 它只是交换了额外的数据以确保它全部正确传递。我想你可以采用类似的方式。
什么是经过验证的轻量级应用程序级方法来保证消息的传递?我已经阅读了一些关于使用序列号并确认收到这些序列号的文章,但可能有更好的方法吗?传输目前是 tcp,但这可能会改变。
我可以举个例子说明 XMPP 协议是如何工作的。
移动应用使用 TCP 作为其传输方式,在某些情况下也可能会丢失消息(例如连接问题等)
所以他们想出了一个单独的 XEP,称为 Stream Management https://xmpp.org/extensions/xep-0198.html
双方交换额外的简单包:r
和a
。
完整流程如下所示:
<!-- 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'/>
所以这里没有任何神奇的东西 - 它只是交换了额外的数据以确保它全部正确传递。我想你可以采用类似的方式。