请选择 进入手机版 | 继续访问电脑版

默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教IM里聊天列表的获取和发送人信息的获取,怎么做合适?
在IM开发,用户登录后,获取用户的聊天列表用什么方式比较好呢,是把聊天列表信息存在本地嘛,每次登录从本地拿,想了一会,发现这个消息列表不好实时保存呀,还有一个疑问,使用socket通信的时候,如果获取发送人的信息,如头像,昵称之类的,可以在socket的消息体里面多加一个是来保存发送人的信息嘛,这样会不会消息体会不会很啰嗦

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

上一篇:求教IM登录后建立连接的优化:如何知道socket属于哪个用户下一篇:阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路

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

推荐方案
评论 5
用http拉
签名: 假期就在眼前,舒服!
1.消息列表有两种方式,一种是不保存,完全存在客户端,来消息后,直接更新就好了 另一种是保存在服务端,为了减少每次拉取量,需要做增量拉取
2.为了保持消息体简洁和减少流量,消息体里不要带多余的用户信息,只带用户id,收到后发现本地没有用户信息,单独通过接口去拉取额外的信息,拉取后缓存到本地,然后在合适的时机更新就行了
引用:zhxh007 发表于 2021-09-17 17:17
1.消息列表有两种方式,一种是不保存,完全存在客户端,来消息后,直接更新就好了 另一种是保存在服务端, ...

比我说的详细多了,感谢了
签名: 假期就在眼前,舒服!
我们的App在进行技术演进的时候,是把用户的相关信息从消息体中剥离出来的。
也就是本地数据库会分离出两张表,一张Message表,一张User表。
Message表只会保留收发对象的用户ID,User表保留所有接触过的用户信息(单聊对象、群成员等)。

查询数据时两个表进行联表查询,展示为MessageVO(视图对象,包含消息与必要的用户信息),
发送消息同样只会携带收发对象的用户ID。

我们在每次启动时必定会执行几项工作:同步离线消息/同步会话/同步好友/同步群组,
本地都会保留一个最后更新的时间戳,以便下次请求时进行增量更新而非全量更新,减少请求数据量。
同步好友操作时就会对好友的用户信息进行更新。
另外就是在收取消息时,发现本地User表没有相关信息时,就会主动请求接口更新用户信息。
引用:椎锋陷陈 发表于 2021-09-18 10:03
我们的App在进行技术演进的时候,是把用户的相关信息从消息体中剥离出来的。
也就是本地数据库会分离出两 ...

说的好
签名: 假期就在眼前,舒服!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部