Whats App系统设计已发​​送,已交付阅读

问题描述

客户端A处于脱机状态:在这种情况下,当客户端处于活动状态时,是否将所有存储的消息(在电话中)由客户端应用程序发送到服务器,或者在建立连接后Whatsapp Server轮询所有未发送的消息。 “客户A电话”?它是推式活动还是拉式活动? 客户端B处于脱机状态在这种情况下:服务器发送到客户端应用程序或在建立连接之后发送的所有已存储(未传递)消息是否都从Whats应用程序Web服务器轮询未决消息?是推式活动还是拉式活动?

解决方法

可以通过任何一种方式实现。

我宁愿采用混合方法。

通常,当设备联机时(打开Internet时),它会询问任何待处理的消息,这是拉动模型。然后,它可以与服务器建立连接并移至推送模型。

此方法的详细说明如下:WhatsApp System Design

有关简短摘要,请参阅:https://www.codekarle.com/system-design/Whatsapp-system-design.html

,

您可以跟踪用户之间交换的所有消息并标记他们的发送和接收状态。假设B在A离线时向A发送了一条消息,该消息将在存储中保存为“A尚未收到”。 A 上线后应该做的第一件事是检查所有待处理的消息。此时,A 会收到 B 的消息,并在数据库中进行标记。

查看thiscodeKarle 视频。他们已经很好地解释了这一点!