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

Echo 的私信列表与详情页是怎么做的

私信详情 从图片上可以看出来,我们要做的事情大概有这些: 1)私信列表: 查询当前用户的会话列表,且每个会话只显示一条最新的私信 查询某个会话的私信数量 支持分页显示 显示未读消息数量 显示与某个用户对话的未读消息数量...显示所有对话的未读消息消息 2)私信详情: 查询某个会话所包含的私信 支持分页显示 访问私信详情时,将显示的私信设为已读状态 OK,先回顾下私信表的结构: id:私信/系统通知的唯一标识 from_id...3)显示该用户的未读消息数量,这个功能包含两点:显示与某个用户对话的未读消息数量;显示所有对话的未读消息消息。...轻车熟路,使用动态 SQL,一个方法搞定:selectLetterUnreadCount 如果传入的参数 conversationId == null,就查询该用户所有会话的未读私信数量;如果传入的 conversationId...= null,则查询这个会话的未读私信数量。 另外,未读消息即状态 status = 0。既然是未读消息,那肯定是别人发给我的对吧,我发给别人的消息谈何未读呢?

1.4K31

WEBIM未读计数不对?

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

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

    你问我答 | 即时通信IM 第四季

    在单聊场景下,接收方如果调用 markC2CMessageAsRead 设置消息已读,发送方收到的已读回执里面包含了对方已读的时间戳 timestamp,SDK 内部会根据 timestamp 判断消息对方是否已读...而云端存储的会话默认只会保存100条(旗舰版用户可在控制台配置保存最多500条),且对于长时间没有信息变更的会话,云端最多保存7天,所以不同的终端本地显示的会话可能会不一样。...会话列表数据源中根据 getConversationID 找到相同的会话并做替换。...Q10:即时通信 IM为什么会议群(Meeting) 中的未读数一直为零?...临时会议群(Meeting)和直播群(AVChatRoom)分别配合会议和直播的音视频场景,因此这两类群组均不支持未读消息计数。

    96630

    uni-app+php+workman实现简单聊天功能之聊天模块封装

    id) 将当前会话置顶在消息列表置顶,更新最后一条消息,更新时间 1.3请求ajax发送消息 1.4渲染到页面 读取消息 写入本地存储 chatlist_当前用户id:获取将当前会话的未读书清零...,调用(__UpdateChatdetail)默认是接受信息(发送消息也会调用该函数) 3.3更新消息列表,将当前会话置顶,修改chatlist中当前会话的data和time显示,调用(__UpdateChatlist...该函数获取服务器的用户绑定结果 如果用户状态正常则使用户上线 初始化tabbar的未读总信息角标initTabbarBadge 获取未读的信息getChatMessages 绑定失败断开连接,并展示相关提示...该函数用于获取未读信息,当用户离线时接受到的消息暂存在服务端缓存,当用户重新上线时触发该函数获取到未读消息并广播事件UserChat使页面获取到未读消息 Message > __UpdateChatdetail...== item.userid; }); let oldnoreadnum = chatlist[index].noreadnum //会话存在 未读消息=0 if(index

    5.2K40

    IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的

    等),将消息显示在私聊或者群聊的会话中。...▶ 【技术方案】:针对离线消息,我们做了如下方案的优化 1)我们增加了离线消息计数器的概念:保存了每个用户的每个会话,未读的消息的元数据(包括未读消息数,最近的一条未读消息、时间戳等数据),这个计数器用于客户端显示未读消息的的红色气泡...2)客户端每次登录时,服务端不推送全量离线消息,只推送离线消息计数器(这部分数据存储在redis里,并且数据量很小),这个数量用户显示在客户端消息列表的未读消息小红点上。...3)客户端拿到这些离线消息计数器数据,遍历会话列表,依次将未读消息数量累加(注意:不是覆盖,服务端保存客户端离线后的增量数据),然后通知服务端清空离线消息计数器的增量数据。...经过一番思考,服务端和客户端最终达成了一致的方案: 1)在未读消息计数器的小红点逻辑中,服务端会把每个会话的最近N条消息一起下发给客户端; 2)客户端进入会话时,会根据未读消息计数器的最近N条消息展示首页数据

    2.4K11

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

    如果使用过钉钉,会发现你发出一条消息,消息下方会显示有几人未读(如下图),而且这个数字数字随着群里成员阅读消息会不断变化(减少),点击能够查看具体哪些人读了消息,哪些人未读消息。 ?...具体做法如下 1、客户端打开会话,查看回执消息时,通过短连接向服务端拉取未读人数。...2、同时客户端向服务端请求订阅该条消息的回执消息(退出这个会话取消订阅) 3、服务端收到此消息的已读确认消息,向用户推送 这样看似较完美,实际上仍然面临推消息的挑战。...我们注意到这类消息用户实际使用场景,用户只在需要查看这条消息已读情况的较短时间内关心已读未读数量。 因此设置一个合理的主动拉取策略就可以比较好的解决这个问题,整个流程如下图。 ?...服务端进行未读人数计算,并缓存 2、User1在查看回执消息时,主动拉取已读人数或未读人数 主动拉取策略怎么设置呢? 用户查看回执消息时,20秒之内,每2秒拉取一次;如果用户退出会话则停止拉取。

    2K20

    百度公共IM系统的Andriod端IM SDK组件架构设计与技术实现

    5、Android端IM SDK的整体架构Android IM SDK整体由公共接口层、业务层和数据层组成,其中:1)接口层:根据业务需要,对外统一提供消息、会话、设置项等相关操作接口以及未读数、成员等相关查询接口...以新消息通知为例:如果有其他用户给当前用户发送消息,消息到达服务端后,服务端根据用户在线状态,通过长连接通道下发新消息通知;端根据约定解析对应通知消息,识别新消息通知,开始拉取新消息操作,拉取新消息后更新会话...9.2挑战一:如何实现同一账号在线设备操作后,其他离线设备在线时用户数据一致性问题概述:如果同一用户有多台手机,用户部分设备处于离线状态(设备断网或未打开APP),如果用户使用在线状态的手机执行了已读会话...用户使用一台设备A已读了和用户小明的聊天信息,设备A中和用户小明的聊天会话中未读数变为0;打开设备B,使其处于在线状态,设备B和用户小明的会话仍显示有5条未读数。...,各个设备下显示的用户消息数量、消息未读状态、会话未读数、会话最近一条消息等要保持一致。

    46900

    如何设计一个亿级消息量的 IM 系统

    通常有Android端、iOS端、Web端等等 未读数 :指用户还没读的消息数量 用户状态 :指用户当前是在线、离线还是挂起等状态 关系链 :是指用户与用户之间的关系,通常有单向的好友关系、双向的好友关系...此时,如果你的系统是读扩散的话为了防止消息丢失,那每一条消息就只能带上上一条消息的ID,前端根据上一条消息判断是否有丢失消息,有消息丢失的话需要重新拉一次。...如何处理未读数 在IM系统中,未读数的处理非常重要。未读数一般分为会话未读数跟总未读数,如果处理不当,会话未读数跟总未读数可能会不一致,严重降低用户体验。...读扩散 对于读扩散来说,我们可以将会话未读数跟总未读数都存在后端,但后端需要保证两个未读数更新的原子性跟一致性,一般可以通过以下两种方法来实现: 使用Redis的multi事务功能,事务更新失败可以重试...写扩散 对于写扩散来说,服务端通常会弱化会话的概念,即服务端不存储历史会话列表。未读数的计算可由前端来负责,标记已读跟标记未读可以只记录一个事件到信箱里,各个端通过重放该事件的形式来处理会话未读数。

    3.5K53

    快给你的软件加IM聊天功能!

    就我个人而言,很多时候是看到了QQ或者微信App的角标,上面显示的多少条未读消息,才打开App,然后通过App里面具体某个联系人后面显示,和当前用户有多少条未读这个数字,来决定打开哪个联系人的聊天页进行查看...因此,我们在消息未读数的实现上,一般需要针对用户维度有一个总未读数的计数,针对某一个具体用户需要有一个会话维度的会话未读的计数。...那么,这两个消息未读数变更的场景是下面这样的: 张三给李四发送一条消息,IM服务端接收到这条消息后,给李四的总未读数增加1,给李四和张三的会话未读也增加1; 李四看到有一条未读消息后,打开App,查看和张三的聊天页...,这时会执行未读变更,将李四和张三的会话未读减1,将李四的总未读也减1。...IM服务端接收到发送的消息后,还会针对接收方进行未读数的变更,以提醒用户查看未读的消息,消息未读数的实现上一般分为:用户维度的总未读和会话维度的会话未读。

    2K10

    开源社区系统 Echo 超全文档助力春招

    ) 「评论模块」 未登录用户无法使用评论功能 发布对帖子的评论(过滤敏感词),将其存入 MySQL 分页显示评论 发布对评论的回复(过滤敏感词) 权限管理(Spring Security) 「私信模块」...未登录用户无法使用私信功能 查询某个会话所包含的所有私信 访问私信详情时,将显示的私信设为已读状态 支持分页显示 查询当前用户的会话列表 每个会话只显示一条最新的私信 支持分页显示 发送私信(过滤敏感词...支持分页 权限管理(Spring Security) 「系统通知模块」 未登录用户无法使用系统通知功能 分别显示每种类型的系统通知的未读数量 显示所有系统通知的未读数量 分页显示某一类主题所包含的通知...进入某种类型的系统通知详情,则将该页的所有未读的系统通知状态设置为已读 显示评论、点赞、关注三种类型的通知 通知列表 通知详情 未读数量 导航栏显示所有消息的未读数量(未读私信 + 未读系统通知) 权限管理...文件夹下的这几个 sql 文件建立数据库表: ?

    2.9K20

    在线客服系统实现复杂统计需求,直接SQL操作查询数据库,统计超过一分钟未回复消息数

    灵活性问题:今天想统计“超1分钟”,明天可能想统计“超5分钟”或“未读消息总数”。这种灵活多变的需求,通过固定后台功能很难满足。...消息内容:聊了啥。 创建时间:这个最重要,用来判断消息发了多久。 消息类型:标记这条消息是 “客服”​ 发的,还是 “访客”​ 发的。 已读状态:标记是 “已读”​ 还是 “未读”。...翻译成数据库查询语言就是: 消息类型是“访客”​ (因为要统计客服“没回复”的消息,所以先找到访客发的消息)。 状态是“未读”​ (客服还没看,或者看了还没回)。...如果要查整个企业的总数,可以这样写: SELECT COUNT(*) FROM message WHERE 企业ID = '你的企业ID' AND 消息类型 = '访客' AND 已读状态 = '未读...= '访客' AND 已读状态 = '未读' AND 创建时间 < DATE_SUB(NOW(), INTERVAL 1 MINUTE) GROUP BY 客服账号; 看,核心就是这两句SQL。

    9110

    产品上新 | 即时通信 IM SDK 5.4.666 版本发布了

    - searchGroups 搜索本地群组资料 ; - searchGroupMembers 搜索本地群成员资料; - 合并两者的结果,根据需求高亮匹配到的字段。...使用方式也特别简单,只需要在控制台上选择同平台的终端登录的数量即可,如下图: 发送消息时可以指定该消息是否更新会话的最后一条消息 正常情况下,每发送或者接收一条消息,会话列表就会显示最新一条消息的内容。...消息在发送之前可以设置 setExcludedFromLastMessage 来达到这种效果,通常这类消息也不希望统计到未读计数中的,可配合 setExcludedFromUnreadCount 接口一起使用...("user_x抢了红包".getBytes());// 该消息不计入会话 lastMsgmessage.setExcludedFromLastMessage(true);// 该消息不计入会话未读数message.setExcludedFromUnreadCount...,会话列表中不希望展示“xxx抢了红包”,更不希望有未读数出现,但是进入聊天界面希望能展示“xxx抢了红包”的消息。

    1.2K30

    一个Oracle小白的AWR报告分析(五)

    SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。...这里重点关注UIO per Exec(s)和运行时间以及%IO,一般是会话堵塞和全表扫描。...5 SQL ordered by Reads: 记录了执行占总磁盘物理读(物理IO)的TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)。...) 未优化读请求=物理读请求-优化读请求 %Opt-优化的读取占SQL读取请求的百分比 %总计-未优化的读取请求占未优化读取请求总数的百分比 物理读取请求总数:7435800 捕获的SQL占总数的87.2%...未优化的读取请求总数:7435800 捕获的SQL占总数的87.2% 优化的读取请求总数:1 捕获的SQL占总数的0.0% 根据Physical Reads(UnOptimized)为Exadata上的指标

    2.9K31

    从新手到专家:如何设计一套亿级消息量的分布式IM系统

    3)群:通常指多个用户之间因聊天而建立起的关联。 4)终端:指用户使用IM系统的机器(通常有Android端、iOS端、Web端等等)。 5)未读数:指用户还没读的消息数量。...此时,如果你的系统是读扩散的话为了防止消息丢失,那每一条消息就只能带上上一条消息的ID,前端根据上一条消息判断是否有丢失消息,有消息丢失的话需要重新拉一次。...未读数一般分为会话未读数跟总未读数,如果处理不当,会话未读数跟总未读数可能会不一致,严重降低用户体验。...8.5.1)读扩散: 对于读扩散来说,我们可以将会话未读数跟总未读数都存在后端,但后端需要保证两个未读数更新的原子性跟一致性。...未读数的计算可由前端来负责,标记已读跟标记未读可以只记录一个事件到信箱里,各个端通过重放该事件的形式来处理会话未读数。

    4.2K01

    SQL Server数据库高级进阶之事务实战演练

    • 隐式事务:SQL查询分析器中,当前会话默认就是为隐式事务。每执行一条DML操作,就直接提交到数据库保存。...(2条消息)SQL Server中的事务(附有实例)_数据库_legendaryhaha的博客-CSDN博客 https://blog.csdn.net/legendaryhaha/article/details...要想解决脏读、不可重复读、幻读等读现象,那么就需要提高事务的隔离级别。但与此同时,事务的隔离级别越高,并发能力也就越低。所以,还需要读者根据业务需要进行权衡。...2)、Sql Server支持6种隔离级别 • 未提交读(Read Uncommited) • 已提交读(Read Commited)(Sql Server的默认事务隔离级) • 可重复读(...当前会话的隔离级别 DBCC USEROPTIONS Sql Server的默认事务隔离级别是已提交读(Read Commited),一个事务不允许读取另一个事务未提交的数据。

    54730

    SQL Server数据库高级进阶之事务实战演练

    •  隐式事务:SQL查询分析器中,当前会话默认就是为隐式事务。每执行一条DML操作,就直接提交到数据库保存。...(2条消息)SQL Server中的事务(附有实例)_数据库_legendaryhaha的博客-CSDN博客 https://blog.csdn.net/legendaryhaha/article/details...要想解决脏读、不可重复读、幻读等读现象,那么就需要提高事务的隔离级别。但与此同时,事务的隔离级别越高,并发能力也就越低。所以,还需要读者根据业务需要进行权衡。 ...2)、Sql Server支持6种隔离级别 •  未提交读(Read Uncommited) •  已提交读(Read Commited)(Sql Server的默认事务隔离级) •  可重复读(...当前会话的隔离级别  DBCC USEROPTIONS   Sql Server的默认事务隔离级别是已提交读(Read Commited),一个事务不允许读取另一个事务未提交的数据。

    73020

    IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

    我们 APP 里面有个草稿功能,每次从会话里出来,都需要判断会话的输入框中是否存在未删除文字(草稿),如果有,则保存起来并在“消息”列表上显示【Draft】+内容,用户下次再进入会话后将草稿还原。...对于一款 IM 应用,提醒用户消息未读是一个常见的功能。在“消息”列表的用户头像上面会显示当前会话的消息未读数,当我们进入会话以后,该未读数需要清零,并且更新“消息”列表。...在我们的头像上面会显示当前未读消息数量,但是这个未读消息数几种不同的情况。...比如: 1)未读消息数是个位数,则背景图是圆的; 2)未读消息数是两位数,背景图是椭圆; 3)未读消息数大于 99,显示 99+,背景图会更长; 4)该消息被屏蔽,只显示一个小圆点,不显示数量。...如下图:  由于存在这几种情况,此处的代码直接根据未读消息数,设置了不同的 png 背景图片。这部分的背景其实完全可以采用 Shape 来实现。

    2.1K20

    十个最常见的 Web 网页安全漏洞之首篇

    最高的是显示在 URL,表单或错误消息上的信息,最低的是源代码。 影响或损坏 - 如果安全漏洞暴露或受到攻击,将会造成多大的破坏?最高的是完整的系统崩溃,最低的是什么都没有。...SQL 注入 描述 注入是一个安全漏洞,允许攻击者通过操纵用户提供的数据来更改后端 SQL 语句。...当用户输入作为命令或查询的一部分被发送到解释器并且欺骗解释器执行非预期的命令并且访问未授权的数据时,发生注入。 由 Web 应用程序执行时的 SQL 命令也可以公开后端数据库。...alert("xss") 上述脚本在浏览器上运行时,如果站点易受 XSS 攻击,将显示一个消息框。...用户使用公共计算机并关闭浏览器,而不是注销并离开。攻击者稍后使用相同的浏览器,并对会话进行身份验证。 建议 应根据 OWASP 应用程序安全验证标准定义所有身份验证和会话管理要求。

    3.2K50
    领券