好奇心--微信QQ的撤回功能

今天突然好奇撤回功能是怎么实现的,因此查阅了一些资料。

其中,有一篇资料详细的解说了微信撤回功能的实现,在此复述一下。

微信的每一条消息,即我们所发出的消息中会自带UniqueMsgID,据说这个消息ID是全球唯一的ID(全球唯一的消息ID其实不难哈,可以通过时间戳+发送者ID+接受者ID,由于发送者ID与接受者ID的长度也是不一致的,因此消息ID也是完全不一样的,包括长度也有可能是不一样的。以上纯属个人YY)。因此,发送消息实质上会发送两个内容,即消息体+UniqueMsgID。用户A发送了一条消息给用户B,思虑一番感觉有不合适的地方,决定撤回消息,长按选择撤回功能,撤回功能被触发,用户A手机端给服务器发送了UniqueMsgID,服务器要对比一下时间戳,是不是超过了两分钟,超过了就不再转发该指令,而是返回一条消息给用户A;要是没有超过两分钟,服务器转发指令到用户B手机端,比对了UniqueMsgID,获取了要撤回的消息之后就实现撤回的效果...下面是一张盗来的图...

说到这里,大致的逻辑已经出来了,但是我似乎还有没弄懂的地方hhh,用户B手机端接收到了指令是如何执行“撤回”效果的?在UI上对该消息进行隐藏并且替换成“对方撤回了一条消息”吗?emmm,明天问一下做开发的同事好了hhh。

我所看的文章后面还有提及,撤回的时间长度为啥是两分钟,我感觉分析得比较有道理,两分钟之内尚未查看消息的可能性是比较大的,随着时间长度的增加,消息被阅读的可能性则更大,如果对方已经看到了消息而自己还执行了撤回操作,可能会尴尬...其实2分钟之内,消息被阅读的可能性也很大,这个时间长度的选取,是不是有大数据的功劳在呢...

关于撤回了消息还留下了痕迹,即:对方撤回了一条消息,有很多人好奇:既然都执行了撤回,为什么不毫无痕迹的撤回还要留下这么一句话呢,有解读说比起发送者,产品更注重阅读者的用户体验~与此同时,撤回消息如果没有痕迹的话,会破坏上下文的完整性,这个解读我还是很赞同的。

用户体验的重要性已经深入人心了,在此我只想说,用户体验至上的产品,请在给我来一打!对鹅厂的喜爱一天比一天严重。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,778评论 0 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,264评论 19 139
  • 个人翻译,转载请注明出处,谢谢! Adobe's Real Time Messaging Protocol 摘要 ...
    SniperPan阅读 7,796评论 1 17
  • https://github.com/coderMyy/MYCoreTextLabel 图文混排 , 实现图片文...
    saman0阅读 8,075评论 1 19
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,404评论 2 33

友情链接更多精彩内容