【问题标题】:Lightweight application level acknowledgement轻量级应用层确认
【发布时间】:2018-10-11 22:59:25
【问题描述】:

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

【问题讨论】:

  • 为什么要从tcp改?堆栈对于您的部署平台来说是否太大?你不想拥塞控制吗?
  • 问题实际上是关于消息接收保证,应用程序级别的确认。
  • [stackoverflow.com/questions/44255697/… 这回答了需要应用程序级别确认的问题。我正在寻找实现。

标签: tcp message messaging


【解决方案1】:

我可以举一个例子,它是如何在 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'/>

所以这不是什么神奇的东西——它只是交换了一个额外的数据,以确保它全部正确交付。我想你可以遵循类似的方式。

【讨论】:

    猜你喜欢
    • 2012-04-25
    • 2010-10-02
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    相关资源
    最近更新 更多