На самом деле это сложный вопрос, потому что такие приложения, как Telegram и WhatsApp, вероятно, имеют несколько логических обработчиков, очень сложную логику.
Но из того, что я могу себе представить и использовать в некоторых своих приложениях для чата, является следующее:
- Для обмена сообщениями используется некоторый протокол реального времени. Telegram использует собственный проприетарный протокол, WhatsApp использует XMPP.
- когда обе стороны находятся в сети (отправитель и получатель), то в режиме реального времени доставляется сообщение XMPP. В основном & amp; обычно приложение имеет постоянное соединение TCP / TLS / WSS с сервером чата, в основном, когда пользователь использует его.
- когда получатель не в сети (не подключен к серверу чата), например не использует приложение (приложение находится в фоновом / приостановленном режиме), тогда push-уведомления будут доставлены. И это только для уведомления пользователя о появлении нового сообщения. Затем пользователь (получатель) открывает приложение и получает реальное сообщение (через XMPP-соединение в реальном времени) или через синхронизацию с сервером по API REST / HTTP.
Таким образом, никаких дубликатов не существует, поскольку толчки служат для того, чтобы просто уведомить пользователя о появлении нового сообщения, пока пользователь не находится в приложении.
ответ дан Rubycon 18 January 2019 в 08:44
поделиться