首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

群聊消息”“” 功能解决方案!

一朋友和我讨论他前段时间面试某大公司的一题目: 企业IM比如企业微信、钉钉里面的群消息的有个的功能,发送者刚发出消息时,当前群里其他群成员都是状态,陆陆续续有人看了这个消息,这时候消息的详情变成...x人,y人,如下图所示,有具体的列表(万恶的功能,看到同事or老板的消息不能假装没看到了),每条消息对应一个唯一的messageid(uint64_t),每个用户对应一个唯一的userid...(uint64_t),应该如何保存这个消息对应的详情呢?...仔细分析,按照目前的设计,每一条消息详情就要占用8B * 群成员数的内存,如果一个活跃的200人大群,每发一条消息就要1600B,如果平均每天消息量是1k,那每个这样的群,每天就要1.6MB...比如C退出群,发消息时maxid还是5,+总人数应该是3(不包括发消息者本人),目前信息只有5个bit(0/1),识别不出来谁已经退出群聊了 退出群聊的成员如何处理?

3K10

面试题:群聊消息设计

一朋友和我讨论他前段时间面试某大公司的一题目 : 企业IM比如企业微信、钉钉里面的群消息的有个的功能,发送者刚发出消息时,当前群里其他群成员都是状态,陆陆续续有人看了这个消息,这时候消息的详情变成...x人,y人,如下图所示,有具体的列表(万恶的功能,看到同事or老板的消息不能假装没看到了),每条消息对应一个唯一的messageid(uint64_t),每个用户对应一个唯一的userid...(uint64_t),应该如何保存这个消息对应的详情呢?...仔细分析,按照目前的设计,每一条消息详情就要占用8B * 群成员数的内存,如果一个活跃的200人大群,每发一条消息就要1600B,如果平均每天消息量是1k,那每个这样的群,每天就要1.6MB...比如C退出群,发消息时maxid还是5,+总人数应该是3(不包括发消息者本人),目前信息只有5个bit(0/1),识别不出来谁已经退出群聊了 2、退出群聊的成员如何处理?

1.8K41
您找到你想要的搜索结果了吗?
是的
没有找到

钉钉消息咋实现的嘞?

前言 一款app,消息页面有:钱包通知、最近访客等各种通知类别,每个类别可能有新的通知消息,实现已功能,包括多少个,这个是怎么实现的呢?...所有,判断有没有小红点,或者小红点的数字是多少,就是简单的获取你与虚拟人的对话的消息的数量。...当然,一个动作不一定只发一条消息,比如,图中下方有个金刚键"消息",它是所有消息的总和,所以,投递其他消息的时候,也要给它投递一次,不过它只展示一个读数字,所以这个消息只需要一个msg_id即可,不需要消息...""。它包含两层意思,一个判否,即内容你是否读过,二是计数,即这个内容有多少人读过。 长尾原因 如果你用Redis存储,成本非常高,浪费非常严重。...这个时候,通常的策略是"[log record]"和"comb", 我们每产生一个动作,比如,赞,收藏,就会产生一个log record( 取关,取消赞...也是一条独立的log record),我们由专门的大数据系统统一收集这些

36710

面试官:群聊消息功能,你来设计一个?

,发送者刚发出消息时,当前群里其他群成员都是状态,陆陆续续有人看了这个消息,这时候消息的详情变成x人,y人,如下图所示,有具体的列表(万恶的功能,看到同事or老板的消息不能假装没看到了...),每条消息对应一个唯一的messageid(uint64_t),每个用户对应一个唯一的userid(uint64_t),应该如何保存这个消息对应的详情呢?...仔细分析,按照目前的设计,每一条消息详情就要占用8B * 群成员数的内存,如果一个活跃的200人大群,每发一条消息就要1600B,如果平均每天消息量是1k,那每个这样的群,每天就要1.6MB...比如C退出群,发消息时maxid还是5,+总人数应该是3(不包括发消息者本人),目前信息只有5个bit(0/1),识别不出来谁已经退出群聊了 退出群聊的成员如何处理?...增加自增mapid字段,一个群聊维护一份,成本几乎可以忽略不计 每个成员由8B(64bit)优化成2bit,减少62/64, 200人旧的方案1600B, 现在只需要(200/8) *

1.4K40

IM群聊消息功能在存储空间方面的实现思路探讨

更有甚者,钉钉的群聊“强制回执”功能,甚至能够知道谁读了消息,谁没有消息(老板的福音啊)。 ▲ 钉钉里的群聊消息功能效果 功能看起来很酷,但用起来是一言难尽(上班族心里苦.... )。...那么,对于状态: 1)如果是私聊:消息的阅读状态比较容易实现,在性能和存储上也不存在问题; 2)如果是群聊:考虑到存储和处理性能,特别当处于一个云环境时,如何高效地处理群聊的状态是一个非常值得探讨的话题...如果你对IM中的功能有产品方面的痛点困惑,可以参考一下微信对功能的设计定位,详见《IM热门功能思考:为什么微信里没有消息”功能?》。...就像下面这样: 1)对于私聊:如果人数n>0,表示消息; 2)对于群聊:直接显示n人即可,当然,当n等于0时表示全部。...4.3 查询群消息人员清单(群聊) 当客户端希望显示某一条群聊消息人员列表,需向服务端发起查询。

5.3K50

Google Gmail邮箱一次性标记所有邮件为

Google Gmail邮箱一次性标记所有邮件为 Google Gmail邮箱一次性标记所有邮件为   和许多 Gmail 用户一样,您的收件箱中也可能塞满了数百甚至数千封电子邮件...,有时很难知道您何时收到新邮件,   这个时候就需要设置将所有的邮件标记为,但是,Gmail邮箱不像我们使用的QQ邮箱操作那么方便,会限制一次只能标记一页邮件最多100封邮件,那对于有4000-...5000封邮件的用户无疑是个灾难,本文 晓得博客 为你介绍 Google Gmail 邮箱一次性标记所有邮件为的方法。...从顶部工具栏中选择“ 标记为 ”图标,点击后即可标记选定的Gmail邮件为。...晓得博客,版权所有丨如未注明,均为原创 晓得博客 » Google Gmail邮箱一次性标记所有邮件为 转载请保留链接:https://www.pythonthree.com/how-to-mark-an-entire-gmail-inbox-as-read

3.4K30

WEBIM计数不对?

确认是否开启自动读上报,Server默认删除消息,切换终端、杀进程和退出登录读数会被清除,如果需要保留可以禁用读上报disableAutoReport。...离线消息读数统计是根据离线消息进行统计,而离线消息有容量限制,如果容量超过会删掉老的消息,平均存储100条消息左右,消息内容越多,存储的越少。...web端计数统计 ALL ON ONE 的原则,一开始登录的第一条最近联系人的会话是不显示计数的 群计数初始值 web端群消息计数初始是通过最近联系人接口返回 登录成功后收到的群消息计数做加一的处理...C2C计数初始值 web端的计数是先获取到最近联系人的所有会话,然后sdk里面会将getmsg里面返回的消息对应之前的会话来做加一处理用来统计消息数 统计之后的计数用webim.MsgStore.sessMap...()i.unread()去显示 登录之后的计数根据消息监听做加一处理 //初始化最近会话的消息读数 function initUnreadMsgCount(){ var sess;

1.5K50

Node + WebSocket + Vue 一对一、一对多聊天室消息 – 第四章

这里就加了一个非常小的改动,加了一个tips-numtips,先展示消息。...服务端就在发送消息的地方增加一个字段,status:1来表示。 WebSocket客户端 由UI界面的代码可以看出,我们调用了一个getMsgNum方法来展示消息数量。...1、参数user没有值时,表示是获取群消息,判断messageList里面的没有bridge(即是群聊消息),并且status为1(即) 2、如果有user时,获取对应用户消息,判断messageList...里面的有bridge(即是用户对话消息)、uid相等,并且status为1(即) 3、打开的是当前对话,即将当前对话的消息状态status改为0() data.map(item=>{ item.status...总结 消息,主要是判断状态,然后搞清楚对象,是谁发的消息没有,就很简单了,就是当前展示的消息列表都改成,所以直接把currentMessage列表的消息改成即可。

1.6K30

消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

前几天粉丝群里有个小伙伴问过:web 页面的消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢。...之前在 《springboot + rabbitmq 做智能家居》 中说过可以用 rabbitmq 的 MQTT 协议做智能家居的指令推送,里边还提到过能用 MQTT 协议做 web 的消息推送,而消息...前端使用与服务端对应的工具 paho-mqtt mqttws31.js实现,实现方式与传统的 websocket 方式差不多,核心方法 client = new Paho.MQTT.Client 和...message=我是程序员内点事&topic=push_message_topic [模拟发送消息] 再看一下前端订阅消息的效果,看到消息被实时推送到了前端,这里只做了消息数量统计,一般还会做消息详情列表...[实时消息推送动图] 总结 消息是一个十分常见的功能,不管是 web端还是移动端系统都是必备的模块,MQTT 协议只是其中的一种实现方式,还是有必要掌握一种方法。

2.6K109

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

答:可以利用群消息的偏序关系,记录每个成员的last_ack_msgid(last_ack_time),这条消息之前的消息,这条消息之后的消息。...对于离线的群友,会在下一次登录时,拉取的所有群离线消息,并将last_ack_msgid修改为最新的一条消息。 核心问题4:如果ack丢失,群友会不会拉取重复的群消息?...上述流程,只能确保接收方收到消息,发送方仍然不知道哪些人在线阅读了消息,哪些人离线阅读消息,并没有实现已回执,那回执会对系统设计产生什么样的影响呢?...对于发送方发送的任何一条群消息,都需要知道,这条消息有多少人多少人,就需要一个基础表来记录这个关系。...8、本文小结 对于群消息回执,一般来说: 如果发送方在线,会实时被推送回执; 如果发送方不在线,会在下次在线时拉取回执。

4.8K20

消息(小红点),前端 与 RabbitMQ 实时消息推送实践,贼简单~

前几天粉丝群里有个小伙伴问过:web 页面的消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢。...之前在 《springboot + rabbitmq 做智能家居》 中说过可以用 rabbitmq 的 MQTT 协议做智能家居的指令推送,里边还提到过能用 MQTT 协议做 web 的消息推送,而消息...前端使用与服务端对应的工具 paho-mqtt mqttws31.js实现,实现方式与传统的 websocket 方式差不多,核心方法 client = new Paho.MQTT.Client 和...message=我是程序员内点事&topic=push_message_topic 模拟发送消息 再看一下前端订阅消息的效果,看到消息被实时推送到了前端,这里只做了消息数量统计,一般还会做消息详情列表...实时消息推送动图 总结 消息是一个十分常见的功能,不管是 web端还是移动端系统都是必备的模块,MQTT 协议只是其中的一种实现方式,还是有必要掌握一种方法。

2K10

史上最详细仿QQ消息拖拽粘性效果的实现

好久没写文章了,前段时间由于项目代码重构忙了一段时间,现在终于有点时间了就为大家带来一篇关于动画学习的自定义View:类似QQ消息拖拽的效果。...currentRadiusStart; private float currentRadiusEnd; private Rect textRect = new Rect(); //消息数...知道了角度A就可以根据角度加上正余弦函数算出各个点的坐标了,这个计算推倒过程我写在图上了,下边就把上述计算过程用代码实现一下 /** * 设置贝塞尔曲线的相关点坐标 计算方式参照结算图即可看明白...模拟器显示效果不是很好,真机效果很好看哦 我们可以继续完善一下,在圆中间添加数字实现消息效果 @Override protected void onDraw(Canvas canvas)...带数字消息的效果 追求完美的人看到这里肯定会说消失的时候少个动画,对,QQ上消失的时候有个气泡破裂的感觉,这个用几张不同状态的图,加上帧动画顺序播放就可以实现,由于我这没有图片资源就不演示这个了,帧动画的写法比属性动画简单多了哦

77920

消息之点不完的小红点(Node+Websocket)

在线用户 这种场景就是相当我们停留在聊天列表页面,当他人在房间中发送消息,我们能够实时的看到消息的条数在增长。 场景示例。 ?...在线用户且在房间的用户 这种场景其实就比较普通了,当别人发送新的消息,我们就能实时看到,此时是不需要标记消息的。 场景示例。 ?...存储在Redis中的消息列表 C. 存储在MongoDB中的消息列表 用户1进入首页。 用户1进入房间,重置用户在房间1的消息,触发更新模块去更新B消息列表。...否,若用户不在房间中,更新其的消息计数 从缓存中获取用户的消息进行分发。 用户2登录我们的项目,从离线用户变成了在线用户。 用户2登录时,触发查询模块,去获取其当前在各个房间消息情况。...key = `${name}-${roomid}`; await updatehCache('socketId', name, socket.id); // 进入房间默认置空,表示全部

2.2K30

IM热门功能讨论:为什么微信里没有消息”功能?

1、引言 张小龙说:微信消息不做“”和“”的功能,是因为要给人撒谎的机会,这才符合人性。 真的对吗? 关于这个问题……对,也不对。...▲ 阿里旺旺的PC端消息”功能 换句话说:聊天消息的“”和“”状态在什么情况下该做呢? 这是一个典型的功能分析,遇到这种分析,我们应该如何用产品思维入手呢?...3.2 第二步:本源思维:定位+场景 我们先来看看两个网友,对于微信消息为什么没有“”和“”功能的优质回答。...同时,微信作为熟人间社交,“/”这样的功能不是没有用;而是对于大部分用户,这样的反馈是毫无价值的。 对于熟人而言,对方回复我了,肯定就是;对方没有回复,可能就是没看到或就是不想回。...▲ “抢红包”的牛X之处在于:居然能让面对面的两个人使用IM却不觉乏味 5、补充 本文是从产品角度讨论微信中的消息”功能,如果您对消息”功能的理论和技术实现有兴趣,可以进一步阅读《IM群聊消息回执功能该怎么实现

1K30
领券