首页 > 解决方案 > Messenger 应用程序如何更新移动应用程序的用户活动(活动、非活动、5 分钟前活动)?

问题描述

Messenger 应用程序如何更新移动应用程序的用户活动(活动、非活动、5 分钟前活动)?

每当您打开您的 Messenger 应用程序时,您都会看到谁是活跃的,谁不是活跃的,Facebook 如何从客户端(移动应用程序)将这些数据发送给用户,如何保持此列表更新?

标签: androidiosmobilewebsocketsystem-design

解决方案


在此处输入图像描述

我已经绘制了一个系统设计,您可以从中获得有关聊天类应用程序背后架构的基本想法。

Step1:订阅通知: 当设备启动时,第一步是连接到服务器并自我介绍,这是使用API​​​​发生的。例如,设备向“API 服务器”发送请求并说,嘿,我是“用户 A”,我想订阅状态通知、消息通知和其他类型的推送通知。

Step2:连接到集线器: 然后客户端(设备)使用 WS 协议连接到 Web-Socket 并监听事件以获取来自服务器的推送通知。

Step3:服务器生成状态消息、聊天消息等消息: 事件发生,因此服务器为该事件生成消息(如状态消息、聊天消息等事件)并发布到消息代理(Kafka)。

Step4:消费消息并将通知推送给客户端: 当消息代理(Kafka)中准备好新消息时,另一个服务会使用来自消息代理的消息,并通过 web-socket(WS 协议)将通知推送给活动的客户端。

Step5:客户端更新ui: 在第二部分,我们提到客户端连接到web-socket。当从服务器端收到新的推送通知时,客户端会对其进行解释并更新 UI。

这就是 Facebook Messenger 等服务背后的理念,它们已经大规模实施。


推荐阅读