Как обрабатываются входящие мгновенные сообщения и уведомления клиентами приложения? - PullRequest
0 голосов
/ 17 января 2019

Меня интересует процедура обработки входящих сообщений и уведомлений из приложений обмена мгновенными сообщениями, таких как Telegram и WhatsApp. Я знаком с протоколом push, но мне любопытно, как приложения для обмена мгновенными сообщениями реализуют принимающую часть.

Во-первых, это мгновенные сообщения от таких служб, как WhatsApp и Telegram, полученные в форме push-уведомлений, или существует дублирование / избыточность, приводящее к некоторому условию гонки между собственными push-уведомлениями , переданными работник службы экземпляра приложения и сообщений , переданных экземпляру приложения на передний план / в основные процессы? Кроме того, мгновенные сообщения всегда и только отправляются в виде push-уведомлений, как минимум для сквозных зашифрованных сообщений из приложений, таких как Whatsapp?

Во-вторых, согласно упомянутой выше гипотезе дублирования / избыточности, уведомление, обрабатываемое работником службы , передается через экземпляру приложения, которое затем отображает его в целевом чате, или является уведомлением отклонено в пользу того, что экземпляр приложения извлекает исходное сообщение с сервера Telegram / Whatsapp? (Я имею в виду сценарий, в котором это требуется для обеспечения того, чтобы отправителю было предоставлено надежное подтверждение того, что сообщение было получено.)

1 Ответ

0 голосов
/ 26 января 2019

На самом деле это сложный вопрос, потому что такие приложения, как Telegram и WhatsApp, возможно, имеют несколько логик обработки очень сложной логики.

Но из того, что я могу себе представить и использовать в некоторых своих приложениях для чата, можно сделать следующее:

  • Для обмена сообщениями используется некоторый протокол в реальном времени. Telegram использует собственный проприетарный протокол, WhatsApp использует XMPP.
  • когда обе стороны находятся в сети (отправитель и получатель), то в режиме реального времени доставляется сообщение XMPP. В основном и обычно приложение имеет постоянное соединение TCP / TLS / WSS с сервером чата, в основном, когда пользователь использует его.
  • когда получатель не в сети (не подключен к серверу чата), например не использует приложение (приложение находится в фоновом / приостановленном режиме), тогда push-уведомления будут доставлены. И это только для уведомления пользователя о появлении нового сообщения. Затем пользователь (получатель) открывает приложение и получает реальное сообщение (через соединение XMPP в реальном времени) или через синхронизацию с сервером по API REST / HTTP.

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

...