应用程序客户端如何处理传入的即时消息和通知?

时间:2019-01-17 17:33:38

标签: push-notification push telegram whatsapp instant-messaging

我对处理来自即时消息应用程序(例如Telegram和WhatsApp)的入站消息和通知背后的过程感兴趣。我熟悉推送协议,但对即时消息传递应用程序如何实现接收部分感到好奇。

首先,是以推播通知的形式接收来自诸如WhatsApp和Telegram之类的服务的即时消息,还是重复/冗余导致在推播通知正确之间产生某种竞争状况传递给应用实例服务工作者,然后将消息传递给应用实例前台/主进程?另外,即时消息是否总是且仅作为推送通知发送,至少是来自诸如Whatsapp之类的应用程序的端到端加密消息?

第二,根据上述重复/冗余假设,是由服务工作者处理的通知传递到应用程序实例,然后将其显示在目标聊天中,或者是通知< em>废弃,赞成该应用实例从Telegram / Whatsapp服务器获取原始消息? (我想到了这样一种情况,以确保向发件人提供可靠的确认消息已被接收。)

1 个答案:

答案 0 :(得分:1)

实际上,这是一个棘手的问题,因为Telegram和WhatsApp之类的应用程序可能有多个处理逻辑的案例,非常复杂的逻辑。

但是我可以想象并在一些聊天应用中实际使用的是:

  • 某些实时协议用于消息传递。电报使用他们自己的专有协议,WhatsApp使用XMPP。
  • 当双方都处于联机状态(发件人和收件人)时,将传递实时XMPP消息。通常,一个应用通常与聊天服务器建立持久的TCP / TLS / WSS连接,主要是在用户使用时。
  • 收件人不在线(未连接到聊天服务器)时,例如不使用应用程序(应用程序处于后台/暂停模式),则将发送推送通知。但这仅是为了通知用户有新消息。然后,用户(收件人)打开一个应用程序并接收真实消息(通过实时XMPP连接)或通过REST / HTTP API与服务器同步。

因此没有任何重复,因为推送只是在用户不在应用程序中时通知用户有新消息。

相关问题