默认
发表评论 9
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教网页端IM好友关系拉取、最近消息、离线消息等设计疑问
阅读(36649) | 评论(9 收藏 淘帖1
做网页聊天室遇到一些想不清楚、下不了决定的问题,希望大家指导我一下
求教网页端IM好友关系拉取、最近消息、离线消息等设计疑问_LDNQ0O)6I8~UJ[22QN[(9JH.png

1.关于离线消息
用户拉取之后我怎么知道用户读没读呢?由于是网页聊天,如果用户登录之后拉取了消息但并未读,此时换了一个浏览器,那是不是收不到未读消息通知了。
需要用户读了之后给服务器一个通知,然后从未读消息中删除吗?

2. 关于最近历史消息
我看了微博的网页聊天,登录之后用户列表会有最后一条消息。见贴图
点击好友进入聊天,顿了一下然后才出来历史消息,应该是到后台又查了一次。这个是用户上线除了拉取未读消息之外应该还拉了最近历史消息吧。
那这个历史消息应该只是拉了一条或者几条吧? 这个消息有必要缓存起来嘛?如果是app的话我肯定不缓存了,但是这个网页版的为了保证用户体验,
要缓存的话,那我是不是应该存在Redis的UserDetail(思维导图左边分支)中好友Map,原来想的是只存id,那现在把最后一条或者几条对话消息也存进去

3.关于用户信息缓存(见思维导图)
这里我想着用户上线拉好友信息的时候,如果直接拉好友的详细信息,那会拉到很多没有用的数据,比如好友的好友信息map。
那我就想着把用户信息存两份,一份用于用户修改自己的信息,另一份用于用户拉取好友信息。
我在这个地方好纠结
因为如果存两份的话用户修改信息,那就要更新多个地方的数据(UserDetail,UserBaseInfo, 数据库),那就要保证数据一致性,感觉不是很好。
那我想能不能将用户信息分成两块,基本信息和详细信息。
用户上线拉好友信息时候,就拉基本信息。
用户拉自己信息时候,就从两个信息都拉取一下,然后进行合并。
这样用户修改数据时候只需要修改缓存的一个地方。有没有更好的办法,或者说是我想多了吗,全存一起就行?

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

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

推荐方案
评论 9
等我睡一觉起来帮你看看
引用:JackJiang 发表于 2022-03-15 13:28
等我睡一觉起来帮你看看

嘿嘿嘿午安
我来帮你回复一下。

1)离线的话,你可以在本地加一个时间标记,这个时间之后的消息表示本次离线后未收取的所有消息。至于换浏览器后丢失cookie或本地存储拿不到这个时间标记怎么办,你就可以设置一个默认读取多长时间的消息就好了,微信也差不多就是这个逻辑。

2)可以设定一个默认拉取一页或者最近多长时间内的消息,这个逻辑主要看你产品经理怎么定义,没有必要套用别人的逻辑。

3)能维护一处的就不要分成多久,缓存这个东西最怕的是数据不一致,少维护一份,就能减少不一致的风险。
引用:JackJiang 发表于 2022-03-15 17:12
我来帮你回复一下。

1)离线的话,你可以在本地加一个时间标记,这个时间之后的消息表示本次离线后未收 ...

感谢指导
第一点的本地存一个时间标志,是指在用户电脑上记录了最后离线时间,上线之后认为该时间之后的消息都是未读消息(离线消息)的意思吗。   

还有一个问题: 如果用户在线且收到了消息,但是用户没有查看。此时用户下线,然后换了一台设备(或浏览器)登录,那这些非离线但是未读的消息,还需要重新发送给这台新的设备吗?或者说,这些消息在新的设备中查看时候,是否还需要提示是未读消息。
如果需要的话,您看这样行不行的通 求教网页端IM好友关系拉取、最近消息、离线消息等设计疑问_QQ截图20220315211552.png

引用:GuangYuanLee 发表于 2022-03-15 21:20
感谢指导
第一点的本地存一个时间标志,是指在用户电脑上记录了最后离线时间,上线之后认为该时 ...

1)可以存最后一条消息的时间戳,也可以存最后一条消息ID(存消息id的前提是你的消息是有序,包括消息id也是有序的才有意义)。

2)换手机了没必要同步,微信就是这样的逻辑(但非要同步的话,也可以做到)。换句话说,换手机后之前的消息就在之前的手机上,很正常的逻辑。
引用:JackJiang 发表于 2022-03-15 22:21
1)可以存最后一条消息的时间戳,也可以存最后一条消息ID(存消息id的前提是你的消息是有序,包括消息id ...


大佬用的什么写webim呀,是公司项目,还是github什么地方的
引用:WarriorFromLong 发表于 2022-03-16 09:15
大佬用的什么写webim呀,是公司项目,还是github什么地方的

我是萌新,自己写着玩的,后端用的爪哇
引用:GuangYuanLee 发表于 2022-03-16 16:46
我是萌新,自己写着玩的,后端用的爪哇

啊这,,,来个qq啥的交流一下呀。。。我去瞅瞅大佬的github
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部