大家都知道,微信有个“后悔药”——消息撤回,即发出后2分钟内的消息不再让对方看到,仅留下一个看起来比较脑残的文字提示。
关于为何限制为2分钟、以及为何会出现文字提示,我们之前已经进行过解答。
另一个问题是,微信是如何做到“覆水回收”的呢?
以MobleA给MobileB发送消息与消息撤回为例:
A.MobileA发送消息时,会在自己的微信客户端上生成全球唯一的UniqueMsgID,并将该UniqueMsgID附带在即将发送的消息体中。 B.MobileB收到消息时,将消息体存储起来,并展示该消息。 C.MoblieA撤回消息时,MobleA知道自己已经发送的每一条消息体的UniqueMsgID,需要撤回哪一条,则将那一条消息的UniqueMsgID附带在撤回命令中。
D.MoblieB收到撤回命令时,根据撤回命令中的UniqueMsgID,在自己的数据库中,寻找对应的消息体,然后予以撤回效果展示。