美文网首页
如何利用融云 IMLib 来实现一个阅后即焚功能

如何利用融云 IMLib 来实现一个阅后即焚功能

作者: _一叶孤帆 | 来源:发表于2020-10-29 20:33 被阅读0次

如何利用融云 IMLib 来实现一个阅后即焚功能

场景

项目需要在私聊中来实现一个阅后即焚的功能,即 A 用户给 B 用户发送消息,B 用户在进入聊天页面查看之后 A 用户删除此消息,B 用户开始进入倒计时,倒计时结束后,删除此消息。

思考

  1. 大体的梳理一下具体的逻辑

    • A -> B
    • B 进入会话页面
    • B 将此消息开始倒计时
    • 通知 A 我已进行阅读
    • A 删除消息
  2. 从上面内容我们来大体的设计一下我们需要用户的技术

    • 自定义消息,用来告诉 A 我已经开始阅读了,你删除吧
    • 一个用于维护阅后即焚消息的管理类
    • 一个存储 A 给 B 发送的所有的阅后即焚的消息的容器 A <k, v> k 为 targetid ,v 为 messageIDs
    • 一个存储每条阅后即焚消息的容器 B <k,v> k 为 messageId, v 为当前消息还剩的倒计时时间。
    • 一个用来存储所有阅后即焚消息的容器 C K:ID V:msg
    • 两个处理队列 一个处理时间 一个处理消息
    • 代理 接收方焚烧消息的每秒倒计时
    • 通知 接收方收到对方已阅读某条消息的通知

详解

  1. 初始化我们的所有容器
  2. 收到消息,在合适的业务时机将此消息加入到焚烧队列
  3. 查询消息是否已经在焚烧队列
  4. 如果不在,添加到 A B C容器
  5. 执行倒计时

倒计时操作

  1. 遍历 C 是否有消息
  2. 给发送方发送消息,通知我已经开始焚烧 A 里的消息了 并在 A 容器删除此会话
  3. 发送方收到消息发送通知
  4. 接收方遍历 B 容器,判断每条消息是否到时
  5. 如果消息焚烧时间到 在 A、B 容器删除,并触发代理
  6. 如果没到时间,就触发代理并修改 此消息在 B 容器的时长。

相关文章

  • 如何利用融云 IMLib 来实现一个阅后即焚功能

    如何利用融云 IMLib 来实现一个阅后即焚功能 场景 项目需要在私聊中来实现一个阅后即焚的功能,即 A 用户给 ...

  • 火葬场

    阅人无数 阅后即焚

  • 《阅后即焚》

    前段买了巴金文革后创作的集子《随想录》。这几天没事,就打开阅读。先生文风质朴,明白如话,就着墨香,如听长者...

  • 阅后即焚

    今少饮,微醺,月缺…… 今大饮,醉,有两个月亮…… 宿醉,看到日出了…… 如果不是偶然翻起在伊拉克用的日记本,我都...

  • 阅后即焚

  • 阅后即焚

    人们挖坑, 手拉手跳入。 浮在脸上的微笑, 泛着油光。 以前,人们在黄昏撕下一页日历, 后来时间被打入虚拟。 只消...

  • 阅后即焚

    道冲乃陕西东府洛滨人,故土素以蒸馍扬名寰宇,余自髫年随祖母大人攻乎是技,遍访民间高人,通览诸经典籍,数十年鸡窗所...

  • 阅后即焚

    钢琴的声音汩汩流出 就想起对黑白键的向往 就想什么时候一定要学一学 每每如是 别人的舞姿翩翩而起 就仿佛看到曼妙的...

  • 阅后即焚

    1. 我呢,自认为是个身体比较强壮的人,一两年不会感冒发烧一次那种。除了每个月折磨我的大姨妈,其他一切安好。而治大...

  • 阅后即焚

    如果你想明白一个道理,即:你来到这个世界上,纯属偶然,而且由生至死的旅程绝非可逆,这个旅程中,也绝没有人可以真的从...

网友评论

      本文标题:如何利用融云 IMLib 来实现一个阅后即焚功能

      本文链接:https://www.haomeiwen.com/subject/hbulvktx.html