默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教关于IM聊天会话列表、离线消息拉取等的一些疑问
阅读(24289) | 评论(4 收藏 淘帖1
就是目前比较疑惑的一些地方。
目前我先考虑是简单做一套可以群聊私聊的IM框架。
单聊有单聊消息表,每条消息都写入历史消息库。
群聊有群聊消息表。目前是准备参考《IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?
才用存一份,每个群成员记录最后一条ACK时间点为准的做法。群准备做1000人群最多

这里有一些可能不知道怎么表达也说不清楚的地方。
先做的单聊。所以使用的是收信箱一样。如果离线。则把消息写到redis的单个用户的收信箱里。上线后只要拉取分页拉取收信箱就行。
现在开始做群聊。那群聊的消息是要怎么拉?

1.离线消息这么拉,前端连接后,写个循环。从前端的会话列表第一个群开始。每次上传群ID+最后一条消息id。然后分页拉取到所有消息后,就接着下一个群,直到所有群拉完。就完成了同步?就是这个过程3000条是不是太久了。。如果用户离线一次消息超过3000条(目前使用网易云信),群消息刷的很快。一天几千条是有的。那用户隔一天上线。拉几千条聊天记录会不会太卡了?

2.维持会话列表最后更新时间?IM开发干货分享:如何优雅的实现大量离线消息的可靠投递》,从这里说到。后端维持一份会话列表,记录最后一次群里的聊天信息和时间和消息id,客户端连接后。将本地的会话列表id上传。跟服务端比较后。返回有更新的会话列表的最后一次的内容,之后如果用户点进去群聊页面,再去拉消息。
2.1,从2 里得知要设计一个会话列表。但是我没看到相关会话列表设计的案例。比如什么时候后端创建这个会话?存缓存还是数据库,是监听客户端发群消息时,服务端转发的时候记录到缓存里吗?会话列表应该保存什么内容之类的,对这块概念比较模糊。然后单聊群聊都要维持到会话列表里去?
到底应该用哪种方式去离线同步群消息


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:求助 IM开发
上一篇:求教IM中好友添加等系统通知的消息,需要做离线保存吗?下一篇:请教一下IM的客户端如何保证消息的顺序

本帖已收录至以下技术专辑

推荐方案
评论 4
1、你这一天就好几千条离线消息,确实是太多了,但多是事实,再多也得拉,可以在体验上进行优化。

2、能通过本地缓存实现的标识和逻辑就在本地处理,尽量不要把复杂性蔓延到服务端,因为服务端后面还要考虑性能优化,搞复杂了,可优化空间就有限了
签名: 《能Ping通,TCP就一定能连接和通信吗?》http://www.52im.net/thread-4756-1-1.html
引用:JackJiang 发表于 2022-06-02 15:25
1、你这一天就好几千条离线消息,确实是太多了,但多是事实,再多也得拉,可以在体验上进行优化。

2、能 ...

能列举几个体验上优化的地方吗?采用2的方案。其实就不用全量拉了。但是设计上就是变复杂了对吧?所以我想知道1方案的情况下。有哪些方案可以优化,举几个方向。
会话列表还有换手机的时候要同步会话列表。所以后端也确实是要维护会话列表的好像。仔细想了想。只是细节上估计是要根据需求去设计了。。比如缓存多久的会话列表。。总不能无限长,然后用户如果很久不在线了。会话列表是不是要落地到数据库之类的,还是直接不要会话列表了
引用:li709854423 发表于 2022-06-02 15:45
能列举几个体验上优化的地方吗?采用2的方案。其实就不用全量拉了。但是设计上就是变复杂了对吧?所以我 ...

如果以微信的逻辑,消息就是要全步同步过来,你卸载微信后,打开时微信就不显示一个转动的菊花,连续加载几十秒都有可能。
会话列表一般没必要同步,如果一定要同步,那显示你只能存服务端,但这就很麻烦了
签名: 《能Ping通,TCP就一定能连接和通信吗?》http://www.52im.net/thread-4756-1-1.html
提示: 作者被禁止或删除 内容自动屏蔽
签名: 今天很666
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部