Я могу привести пример того, как он работает для протокола 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'/>
Так что здесь нет ничего волшебного - просто нужно обменяться дополнительными данными, чтобы убедиться, что все доставлено правильно.Я думаю, что вы можете пойти по тому же пути.