首页
学习
活动
专区
圈层
工具
发布

IM群聊消息的已读回执功能该怎么实现?

更有甚者,钉钉的群聊“强制已读回执”功能,甚至能够知道谁读了消息,谁没有读消息(老板的福音啊)。 那么群聊消息的收发流程、消息的送达保证、已读回执机制,到底该怎么实现呢?这就是今天要讨论的话题。...6、已读回执流程的设计 前面的基础知识我们已经了解的差不多,本节来讨论本文的重点内容,即群聊已读回执流程到底该怎么设计。...这里的初步结论是: 如果发送方在线:会实时被推送已读回执; 如果发送方不在线:会在下次在线时拉取已读回执。...8、本文小结 对于群消息已读回执,一般来说: 如果发送方在线,会实时被推送已读回执; 如果发送方不在线,会在下次在线时拉取已读回执。...如果要对进行优化,可以: 接收方累计收到N条群消息再批量ack; 发送方轮询拉取已读回执。 物理删除已读回执数据,定时删除或归档非核心历史数据。

5.8K20

群消息已读回执,为什么这么难?(第74讲)

微信用于个人社交,产品设计上,在线状态,强制已读回执都有可能暴露个人隐私,故微信并无相关功能。 钉钉用于商务交流,其“强制已读回执”功能,让职场人无法再“假装不在线”,“假装没收到”。...二、已读回执流程 对于发送方发送的任何一条群消息,都需要知道,这条消息有多少人已读多少人未读,就需要一个基础表来记录这个关系。 消息回执表:用来记录消息的已读回执。...向发送方实时推送已读回执(如果发送方在线); 如果发送方不在线,ta会在下次登录的时候: 5. 从关联表里拉取每条消息的已读回执; 这里的初步结论是: 1....如果发送方在线,会实时被推送已读回执; 2....已读的消息,可以进行物理删除,而不是标记删除; 2. 超过N长时间的回执,归档或者删除掉; 四、总结 对于群消息已读回执,一般来说: 1. 如果发送方在线,会实时被推送已读回执; 2.

1.4K32
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    群消息已读回执(这个diao),究竟是推还是拉?

    微信用于个人社交,产品设计上,在线状态,强制已读回执都有可能暴露个人隐私,故微信并无相关功能。 钉钉用于商务交流,其“强制已读回执”功能,让职场人无法再“假装不在线”,“假装没收到”。...二、已读回执流程 对于发送方发送的任何一条群消息,都需要知道,这条消息有多少人已读多少人未读,就需要一个基础表来记录这个关系。 消息回执表:用来记录消息的已读回执。...(如果发送方在线) 如果发送方不在线,ta会在下次登录的时候: (5)从关联表里拉取每条消息的已读回执 这里的初步结论是: 如果发送方在线,会实时被推送已读回执 如果发送方不在线,会在下次在线时拉取已读回执...答:回执数据不是核心数据 已读的消息,可以进行物理删除,而不是标记删除 超过N长时间的回执,归档或者删除掉 四、总结 对于群消息已读回执,一般来说: 如果发送方在线,会实时被推送已读回执 如果发送方不在线...,会在下次在线时拉取已读回执 如果要对进行优化,可以: 接收方累计收到N条群消息再批量ack 发送方轮询拉取已读回执 物理删除已读回执数据,定时删除或归档非核心历史数据 推送还是拉取?

    2.2K30

    我是如何设计出高性能群消息已读回执系统的

    提起群消息的已读回执啊,搞过IM的朋友估计或多或少的遇到过一些弯路。尤其是群里有几百号人甚至上千人的时候,要是还傻huhu地给每个人存一份消息副本?那简直就是给自己找罪受!...消息回执表 (msg_acks)这张表用来记录详细的已读回执信息,主要是为了给发送者展示"谁读了我的消息":CREATE TABLE msg_acks ( id BIGINT AUTO_INCREMENT...因为即使优化了,每条消息还是需要N-1条回执记录。但产品经理坚持要"已读列表"功能,我们只能妥协,不过后面通过定期清理缓解了存储压力。...推送已读回执给消息发送者 notifyReadReceipt(request); } private void notifyReadReceipt(AckRequest...AND m.msgid > gu.last_ack_msgid AND m.status = 1ORDER BY m.msgid ASCLIMIT 100;-- 优化后的已读回执统计查询SELECT

    70220

    Grok4最新评测&群消息已读回执背后的架构技术

    点击链接查看原文: Grok 4 最新技术评测与发布指南 02《群消息已读回执,为什么这么难?》...微信用于个人社交,产品设计上,在线状态,强制已读回执都有可能暴露个人隐私,故微信并无相关功能。钉钉用于商务交流,其“强制已读回执”功能,让职场人无法再“假装不在线”,“假装没收到”。...群消息的流程如何,接收方如何确保收到群消息,发送方如何收已读回执,究竟是拉取,还是推送,是今天沈剑老师要聊的话题。 节选金句: 核心问题1:群消息,只存一份?还是,每个成员存一份?...答:可以利用群消息的偏序关系,记录每个成员的last_ack_msgid(last_ack_time),这条消息之前的消息已读,这条消息之后的消息未读。...点击链接查看全文: 群消息已读回执,为什么这么难?(第74讲) -End-

    39010

    企业微信的IM架构设计揭秘:消息模型、万人群、已读回执、消息撤回等

    收发消息双方需存在至少一种关系才允许发消息; 2)回执消息:每条消息都需记录已读和未读人员列表,涉及频繁的状态读写操作; 3)撤回消息:支持24小时的有效期撤回动作; 4)消息存储:云端存储时间跨度长,...例如:回执消息,发送方能看到已读未读列表,接受方只能看到是否已读的状态。云端删除某条群消息,在自己的消息列表消失,其他人还是可见。 缺点:存储容量的增加。...=a1,追加写入到a的消息流; 5)接收方c已读同一条消息,在c的消息流走同样的逻辑; 6)发送方a,读出msgid=a1的消息体,把c加入到已读列表,把新的已读列表保存到消息体中,生成新消息msgid...11.4 优化2:合并处理 客户端收到大量消息,并不是一条一条消息已读确认,而是多条消息一起已读确认。为了提高回执消息的处理效率,可以对多条消息合并处理。...流程如下: 1)发送方某条消息的已读状态是X; 2)接收方a确认已读,已读状态修改为X+a; 3)接收方b确认已读,已读状态修改为X+b; 4)接收方a的状态先写入,接受方b的状态后写入。

    5.8K24

    别人读没读你的消息,你如何知道?

    发送者如果在App上做别的事情,根本不需要关心当前有多少人已读。因此直接推送已读确认也不合适。 如果变为客户端查看的时候主动拉取呢?...具体做法如下 1、客户端打开会话,查看回执消息时,通过短连接向服务端拉取未读人数。...2、同时客户端向服务端请求订阅该条消息的回执消息(退出这个会话取消订阅) 3、服务端收到此消息的已读确认消息,向用户推送 这样看似较完美,实际上仍然面临推消息的挑战。...1、User1发出一条回执消息,其他用户(User2、User3……UserN)读取消息后,向服务端发送已读确认消息。...服务端进行未读人数计算,并缓存 2、User1在查看回执消息时,主动拉取已读人数或未读人数 主动拉取策略怎么设置呢? 用户查看回执消息时,20秒之内,每2秒拉取一次;如果用户退出会话则停止拉取。

    2.3K20

    基于OAuth同意滥用的假冒微软应用钓鱼攻击研究

    3.2 权限范围缺乏上下文解释OAuth同意页面仅列出权限名称(如“Mail.Read”),未说明其实际能力(“可读取所有邮件,包括已删除项”)。用户难以判断风险。...3.3 缺乏应用行为基线监控SIEM系统通常未将“新应用首次访问Graph API”与“大量邮件读取”关联分析。即使启用日志,也因数据量庞大而忽略异常。3.4 审计滞后企业极少定期审查已授权应用列表。...可通过Microsoft Graph API动态评估权限风险:HIGH_RISK_SCOPES = {'Mail.ReadWrite', 'MailboxSettings.ReadWrite','User.ReadWrite.All...Graph 查询示例:GET https://graph.microsoft.com/v1.0/me/oauth2PermissionGrantsAuthorization: Bearer 已授权应用”自助管理页面,鼓励用户定期审查。

    42410

    你打出去的“客服电话”,正在把黑客请进公司内网——Microsoft Teams通知成新型钓鱼跳板,回拨型攻击席卷全球企业

    一封来自 no-reply@teams.mail.microsoft.com 的邮件静静躺在某跨国制造企业IT主管的收件箱里。主题是:“你在‘财务Q4结算’会议中被提及”。...Microsoft Teams作为全球超3亿用户使用的协作平台,其通知邮件由微软官方域名 teams.mail.microsoft.com 发出,具备完整的SPF、DKIM、DMARC认证。...而此次攻击巧妙规避了这两点:无恶意内容:邮件仅含文字和电话号码,无可疑链接或附件;发件人合法:no-reply@teams.mail.microsoft.com 是微软真实通知通道,无法被拉黑。...邮件层:增强Teams通知监控限制Teams外部邀请:在Microsoft 365管理中心配置策略,禁止非组织成员创建团队或邀请用户;监控异常团队命名:通过Microsoft Graph API定期扫描团队名称...,识别含“PayPal”“Billing”“Urgent”等关键词的可疑实体;# 示例:通过Graph API列出所有团队GET https://graph.microsoft.com/v1.0/groups

    1K10

    ConsentFix攻击机制与OAuth授权滥用的防御对策研究

    一旦授权成功,即使用户更改密码或启用MFA,攻击者仍可通过已授权的应用持续访问邮箱、日历、文件等敏感资源。...,"scope": "Mail.Read Mail.Send Files.Read.All","expires_in": 3600}至此,攻击者无需知道用户密码,即可通过access_token调用Microsoft...(二)策略管理层:建立授权生命周期管理定期授权审计:每季度导出全组织应用授权清单,清理未使用或来源不明的应用;实施最小权限原则:推动业务部门使用权限更细的现代API(如Microsoft Graph的delegated...permissions with scopes);自动化撤销机制:当检测到可疑活动时,自动调用Microsoft Graph API撤销相关应用授权:# 使用Microsoft Graph API撤销用户授权...import requestsdef revoke_consent(user_id, app_id, access_token):url = f"https://graph.microsoft.com/

    40510

    俄罗斯国家级黑客组织借“设备代码钓鱼”潜入全球政企云邮箱,安全界拉响新型OAuth攻击警报

    发件人自称正在筹备一场关于东欧能源安全的闭门研讨会,希望邀请她参与前期材料审阅,并附上一个“预读文档链接”。...# 攻击者侧:使用Microsoft Graph API发起设备代码请求(简化示例)import requestsclient_id = "attacker-controlled-app-id" # 攻击者注册的恶意应用...IDscope = "Mail.Read Mail.Send Files.Read.All User.Read"resp = requests.post("https://login.microsoftonline.com...breaktime.sleep(5)拿到Token后,攻击者即可调用Microsoft Graph API,读取邮件、日历、OneDrive文件、Teams消息,甚至发送新邮件冒充受害者——全程无需知道密码...例如,若某账户在短时间内从不同国家调用Graph API,即使Token合法,也应触发二次验证。(4)员工意识培训需升级传统“别点可疑链接”已不够。

    54110

    win10 uwp 使用 Microsoft.Graph 发送邮件 注册应用创建 UWP 程序安装 nuget 包添加访问权限发送邮件

    在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Microsoft.Graph...经过了一天的测试终于成功使用发送邮件 本文告诉大家如何在 UWP 调用 Microsoft.Graph 发送邮件 在仔细阅读了Microsoft Graph 桌面应用程序 - 陈希章的文章之后,按照文章的方法尝试了很久终于成功发送了邮件...可以使用 Microsoft.Graph 调用 Office 365 的几乎所有功能,但是我只有成功使用邮件的功能,暂时就先告诉大家如何在 UWP 使用 Microsoft.Graph 发送邮件 之后的其他功能等我跑通了...,再告诉大家 因为 Microsoft.Graph 开发速度是很快的,本文安装的 Nuget 都会告诉大家指定的版本,防止因为微软的版本修改而让大家无法按照本文提供的方式 注册应用 首先登陆 Microsoft...安装 nuget 包 右击项目,点击管理 Nuget 包 先点击安装 Microsoft.Graph 的 1.11 版本 ?

    2.8K30

    IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?

    1、前言 IM的群聊消息,究竟存1份(即扩散读方式)还是存多份(即扩散写方式)? 上一篇文章《IM群聊消息的已读回执功能该怎么实现?》...沈剑的另外几篇有关IM的文章也值得你去阅读: 《理论联系实际:一套典型的IM通信协议设计详解》 《IM群聊消息的已读回执功能该怎么实现?》...《IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议》 《IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token》 《IM群聊消息的已读回执功能该怎么实现...《现代IM系统中聊天消息的同步和存储方案探讨》 《关于IM即时通讯群聊消息的乱序问题讨论》 《IM群聊消息的已读回执功能该怎么实现?》...画外音:这里的讨论,仅限于接收方收到了哪些消息,和发送方的已读回执没有关系。(这里指的是作者的上篇文章《IM群聊消息的已读回执功能该怎么实现?》)

    2K20

    基于恶意OAuth应用的MFA绕过攻击:微软身份体系中的新型钓鱼威胁研究

    (Access Token)与刷新令牌(Refresh Token);应用使用令牌调用Microsoft Graph API。...Graph"resourceAccess": [{ "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", "type": "Scope" }, // Mail.Read...3.4 数据窃取与横向移动获得令牌后,攻击者可调用Microsoft Graph API执行以下操作:# 读取最新100封邮件Invoke-RestMethod -Uri "https://graph.microsoft.com...-Headers @{ Authorization = "Bearer $accessToken" }# 下载OneDrive根目录文件Invoke-RestMethod -Uri "https://graph.microsoft.com...防御体系构建5.1 身份治理层5.1.1 限制应用注册权限在Entra ID中执行以下配置:禁用用户注册应用:Users → User settings → App registrations → No启用已批准应用列表

    56910

    使用腾讯云IM搭建应用内类微信社交聊天模块实践

    消息已读回执单聊和群聊均支持消息已读回执功能,操作步骤一致。图片图片是否启用此功能,可根据您的社交业务需求决定。...例如对于类似微信的熟人社交,已读回执的用处可能不是非常大;但是对于陌生人交友场景,已读回执则十分重要,帮助用户来确认,对方是否愿意跟自己聊下去,是否已读不回;对于工作聊天场景,群已读回执还能发挥更大的作用...此外,发送端也可主动请求消息已读回执信息。发送端从其他界面进入消息列表后,先请求获取历史消息,再调用 getMessageReadReceipts 方法请求获取消息已读回执信息。...群聊场景的消息已读回执,通常需要能够查看详情,显示群内哪些人已读,哪些人未读。...当用户点击已读回执角标时,可调用 getGroupMessageReadMemberList 方法分页拉取消息已读或未读群成员列表。

    10.1K171

    多渠道协同钓鱼攻击演进与防御体系研究 —— 以邮件与 Teams 联合攻击为例

    跨通道验证伪造邮件称 “已通过 Teams 发送确认信息”,Teams 称 “已发送邮件说明”,双向互证让用户误以为经过多重校验。...平台特性滥用借助 Teams 快速回复、已读回执、@提醒、 pinned 消息等功能,制造官方处理氛围。...跨渠道关联检测 def check_cross_correlation(self, mail_subject, teams_content): mail_topic = "密码" if..."密码" in mail_subject else "文件" if "文件" in mail_subject else "其他" teams_topic = "密码" if "密码" in...teams_content="请确认密码过期事宜" ) print("多渠道钓鱼检测结果:", res)4.3 模型部署要点数据源接入:对接邮件网关、Teams 审计日志、Graph

    30510

    Kali365 OAuth 钓鱼攻击机理与 M365 全场景闭环防御技术研究

    全球安全厂商统计数据显示,遭受 Kali365 入侵的企业中 92% 已全员启用 MFA 多因素认证,传统以密码防护、短信二次校验为核心的安全建设体系出现系统性防护盲区。...实时推送受害账号上线提醒;第四,入侵后置隐蔽机制:攻击者拿到账号权限后,依托 Kali365 内置规则模板在受害 Outlook 中创建收件箱过滤规则,将含 “钓鱼、验证码、授权” 等关键词的来信自动移入归档文件夹并标记已读...Graph 接口拉取用户应用授权记录,识别短时间内新增陌生第三方应用高权限授权(Mail/File 全量读写),判定 Kali365 恶意授权。...import requestsGRAPH_TOKEN = "your_graph_api_token"GRAPH_URL = "https://graph.microsoft.com/v1.0/users...","Files.Read.All"])) print(audit_entra_auth("user@corp.com","Microsoft Office",["Mail.Read"]))3.4

    34810
    领券