Облегченное подтверждение уровня приложения - PullRequest
0 голосов
/ 06 октября 2018

Что такое проверенный легкий способ применения на уровне приложений, чтобы гарантировать доставку сообщений?Я читал об использовании порядковых номеров и подтверждении их получения, но могут быть более эффективные способы?Транспорт в настоящее время tcp, но это может измениться.

1 Ответ

0 голосов
/ 11 октября 2018

Я могу привести пример того, как он работает для протокола 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'/>

Так что здесь нет ничего волшебного - просто нужно обменяться дополнительными данными, чтобы убедиться, что все доставлено правильно.Я думаю, что вы можете пойти по тому же пути.

...