首页
开源软件
问答
博客
翻译
资讯
Gitee
众包
活动
专区
源创会
高手问答
开源访谈
周刊
公司开源导航页
登录
注册
资讯
软件
博客
专区
问答
活动
工具
培训
众包
APP
Gitee
登录
注册
IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的
1、引言 好久没写技术文章了,今天这篇不是原理性文章,而是为大家分享一下由笔者主导开发实施的IM即时通讯聊天系统,针对大量离线消息(包括消息漫游)导致的用户体验问题的升级改造全过程。 文章中,我将从如下...
作者:
JackJiang2020
IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的
分享
复制链接
README badge(
)
社交分享
微信
QQ
微博
whaon
2020/06/22 18:06
“客户端每次登录时,服务端不推送全量离线消息,只推送离线消息计数器(这部分数据存储在redis里,并且数据量很小),这个数量用户显示在客户端消息列表的未读消息小红点上。”
这里也可以用Http去拉呀,只是拉取数量而已
回复
举报
JackJiang2020
2020/06/23 21:53
是的
回复
举报
yongk
2020/06/22 10:01
请教个问题,就是如果用户一直不登陆app(忘记密码或者人发生意外了),那这个用户的历史消息(群+聊天)会一直存在还是有什么好的方案?
回复
举报
JackJiang2020
2020/06/22 10:47
该评论暂时无法显示,详情咨询 QQ 群:
点此入群
yongk
2020/06/24 13:30
明白,谢谢。
回复
举报
开源中国首席路人王
2020/06/21 15:43
您好,请问IM通讯要怎么建立长连接?
回复
举报
JackJiang2020
2020/06/22 10:47
去了解一波网络编程
回复
举报
OSC_WSSRFZ
2020/06/21 13:00
本人也做过PC端和Android端即时通讯,认为本不应该出现这种问题,可能是设计思路出了问题。可以参考下TIM(腾讯即时通讯)文档
回复
举报
菜狗哉
2020/06/20 22:07
客户端设计问题吧。居然被吃爆了。。。简直……了
回复
举报
码
码畜222
2020/06/20 15:58
请问下,你们的客户端是安卓,ios都有吗?ios怎么集成的netty呢
回复
举报
卷卷的铲屎官
2020/06/22 16:22
不是在客户端继承netty,是客户端通过网络协议,与服务端netty进行通讯
回复
举报
YuKimCai
2020/06/20 14:57
我参与过一次即时聊天,拉取离线数据的时候,我们是根据一个时间节点(或者id,自生成的id是有时间参与其中的),每次根据时间去取当前到前十条,一次类推,等到取完未读总数,就不向服务器获取数据(大概就这个意思)
回复
举报
一剪梅i
2020/06/20 14:03
离线消息也不能一次全推嘛
回复
举报
源码君
2020/06/20 12:37
我觉的由客户端主动去拉取最后的一屏数据比较合理。然后就是TCP这个协议在IM中我总感觉不是很合适,我觉的QQ的那套UDP+TCP的更好一点,当然我只是听说,协议上懂得不多。
回复
举报
张金富
2020/06/20 09:38
但凡用过qq也不会提出方案一了😄
回复
举报
乐悠族
2020/06/20 09:34
群聊的离线消息数据是针对每个账号保存的么?那这会增加多少冗余数据,如果是集中存储的话,那么怎么又说不存储在线消息呢。
回复
举报
g
golyu
2020/06/20 09:14
我们刚要做im这一块,感谢经验分享
回复
举报
g
golyu
2020/06/20 09:12
不错不错,我们刚要做im这一块
回复
举报
冰淇淋终结者
2020/06/19 16:36
你们不存储在线消息怎么实现消息漫游呢?
回复
举报
nonnetta
2020/06/18 10:35
离线消息一般的做法是类似QQ那种吧
1. 启动时每个群只加载最后一页数据,只在列表界面显示最近一条消息,以及未读条数。
2. 点开聊天界面往上拉去消息时才继续加载。
回复
举报
JackJiang2020
2020/06/18 12:14
该评论暂时无法显示,详情咨询 QQ 群:
点此入群
f
freezingsky
2020/06/18 09:24
我想起XMPP协议对于离线的消息处理:
1. 客户端登陆后暂不接受新消息
2. 客户端主动查询待确认消息
3. 客户端主动按数量拉取待确认消息
4. 客户端开启接收消息的标记
有点久了,但大致流程好像就是如此。
回复
举报
JackJiang2020
2020/06/18 12:13
是的,大概都是这样的思路,只是要怎么拉取,拉取多少的问题。
回复
举报
木九天
2020/06/18 08:56
6
回复
举报
回复 @
{{ emoji.type }}
{{emojiItem.symbol}}
评论用户
g
码
推荐博客
RAG 修炼手册|RAG 敲响丧钟?大模型长上下文是否意味着向量检索不再重要
Zilliz
·
今天 18:33
0 评论
定位时长缩减90%:酷家乐如何提升系统故障根因分析准确率?
TakinTalks稳定性社区
·
今天 15:58
0 评论
发现数据异常波动怎么办?别慌,指标监控和归因分析来帮你
袋鼠云数栈
·
今天 15:46
0 评论
无忧微服务:如何实现大流量下新版本的发布自由
阿里云云原生
·
今天 15:10
0 评论
消息队列的七种经典应用场景
勇哥Java实战
·
今天 15:06
0 评论
清华博士带你掌握Llama大模型 40节课助你涨薪 120%
OSC 培训
·
今天 14:45
0 评论
知识图谱推理算法综述(下):基于语义的匹配模型
机器智能社区
·
今天 14:21
0 评论
知乎:多云架构下大模型训练,如何保障存储稳定性
Juicedata
·
今天 14:14
0 评论
BMC 调测载板解读第三期:eBMC套件固件烧录及上电过程
OurBMC
·
今天 11:50
0 评论
为什么做定制救不了软件 SaaS 公司
Apache SeaTunnel
·
今天 11:16
0 评论
删除一条评论
评论删除后,数据将无法恢复
取消
确定
©OSCHINA(OSChina.NET)
工信部
开源软件推进联盟
指定官方社区
社区规范
深圳市奥思网络科技有限公司版权所有
粤ICP备12009483号
顶部
这里也可以用Http去拉呀,只是拉取数量而已
1. 启动时每个群只加载最后一页数据,只在列表界面显示最近一条消息,以及未读条数。
2. 点开聊天界面往上拉去消息时才继续加载。
1. 客户端登陆后暂不接受新消息
2. 客户端主动查询待确认消息
3. 客户端主动按数量拉取待确认消息
4. 客户端开启接收消息的标记
有点久了,但大致流程好像就是如此。