请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

离线消息问题

老师,没太明白为什么离线消息是不管接收方在不在线都先写进去,是因为这里性质其实不算是离线消息,只是把7天内的消息都存redis?如果只做单端,是不是只用往toid的key里存
如果用户上线的时候需要展示自己每个会话框未读的消息数量,包含在线的时候收到但是没有读的消息,未读消息的数量有没有在redis里维护的比较好的方法呢,只能每次上线的时候拉一下会话表的readSeq,然后和消息表的seq比较进行数量计算吗

正在回答

1回答

conan老师 2023-06-16 17:26:05

没太明白为什么离线消息是不管接收方在不在线都先写进去” 因为你不知道用户有几个端,假设你只登录了一端,只判断这一端是否在线不在线就存离线的话,过一会他手机端上线了,去拉离线就一条消息都拉不到了。

只是把7天内的消息都存redis” 应该换个说法,是只保存7天的离线消息。

如果只做单端,是不是只用往toid的key里存” 是的。

未读消息的数量有没有在redis里维护的比较好的方法呢,只能每次上线的时候拉一下会话表的readSeq,然后和消息表的seq比较进行数量计算吗” 未读数其实是个比较复杂的东西,我们的设计是让客户端做。

0 回复 有任何疑惑可以回复我~
  • 提问者 jenmu #1
    谢谢老师,回答太详细了。关于离线消息还有个问题,只做web单端的情况下,浏览器本地不存储数据,是不是没必要在上线的时候进行离线消息的拉取,如果在会话表中维护一个最新消息id的字段,每次上线去会话表里读一下,点对话框的时候再去历史消息表里读,这样是不是就没必要存离线消息了?
    回复 有任何疑惑可以回复我~ 2023-06-16 17:37:15
  • conan老师 回复 提问者 jenmu #2
    按你说的你得先拉取到会话才行
    回复 有任何疑惑可以回复我~ 2023-06-16 17:39:26
  • 提问者 jenmu 回复 conan老师 #3
    好的,想法是用户上线时候根据uid去会话表拉取,因为要做的电商没有好友关系,只能用会话表来做最近联系人表了
    回复 有任何疑惑可以回复我~ 2023-06-16 17:47:28

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信