码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【开发经验】通知气泡实现思路


    文章目录

      • 背景
      • 优化思路

    背景

            在im即时通讯中、公告栏等功能中,有一个功能叫通知气泡,就是提示用户有多少消息未读,然后让用户点击之后,气泡消失。

    在这里插入图片描述

            看似简单的功能,在设计起来很有讲究,因为,这种消息通知,肯定有私聊、广播、发送部分人等。简单的来设计,会设计出一个消息发送表。字段大概为,或者如果有群发、分组发、类型发时,可能要设计出两个表:

    消息发送表:id、发送人、接收对象(群组id、类型id、userId)、接收类型(群组、类型、人)、发送时间

    消息已读表:id、消息id、接收人、接收时间

            这种设计有个很明显的弊端,看似简单的一个功能 ,如果要过滤当前未读的数据,要先检索当前用户所属类型、群组下是否有未读消息,加上当前人是否有私聊消息。相对麻烦。

            并且,消息已读表中的数据,数量庞大,但是意义不大。

    优化思路

    根据发送时间来筛选气泡,去除消息已读表

    每个用户附加一个拉取最后一条消息的时间,然后根据时间进行过滤。

    image-20220830155822567

            如上图所示,每个用户记录当前用户接收到最后一个消息的id或者时间。如记录最后一个消息的时间。过滤时,只需要过滤发送给自己的,并且大于当前记录的消息时间即可。

            每次拉取最新消息之后,刷新用户最后接收的消息id或时间。

            注:此思路适合简单的消息通知,在如果是复杂的即时通讯功能,如钉钉中的消息已读功能实现,此思路仅可参考。

  • 相关阅读:
    springboot系列(二十一):基于AOP实现自定义注解且记录接口日志|超级超级详细,建议收藏
    WSL Ubuntu 22.04.2 LTS 安装paddlepaddle-gpu==2.5.1踩坑日记
    高项_第九章人力资源管理
    【计算机组成原理】寄存器的本质——锁存器
    【JAVA高级】——玩转JDBC中的三层架构
    为什么企业要选择使用报修工单管理系统?
    HJS-DE1/2时间继电器
    微信小程序--WXML模板(共同属性、模板和引用)--3
    测试岗面试,一份好的简历总可以让人眼前一亮
    不希望你的数据在云中?关闭iPhone或Mac上的iCloud
  • 原文地址:https://blog.csdn.net/qq_30285985/article/details/126606744
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号