请稍等 ...
×

采纳答案成功!

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

消息已读功能疑问

图片描述
这里的代码是不是有个问题没有处理,假设用户A给用户B发消息,用户A的同步端会给用户B 发送一条已读回执消息,这个不应该发送吧?

正在回答 回答被采纳积分+3

2回答

conan老师 2023-06-09 08:43:53

先来剖析一下 这里的逻辑:

syncToSender方法会把自己已读的信息发送给同步端,这个能实现什么功能呢?这个是已读的command,你可能从手机端收到了这条消息但没有点到会话里面去,会话上有个小红点,点进去已读了这条消息,小红点消失,那么你的其他端也需要知道你已读了同步地把小红点去掉。这是这一段逻辑可以实现的功能。

那么你框起来的这一段可以实现什么功能:就是实现对方知道你是否已读,比如钉钉,比如淘宝,你作为消息的发起方你可以知道对方有没有已读你的消息。如果你不需要这个功能确实可以不发送,但是我们的定位是给多个系统去接入的,总会有app需要这个功能的。

0 回复 有任何疑惑可以回复我~
  • 提问者 我爱PQ #1
    老师你的解释是从接收方的角度来说的,我想问的是发送方的同步端也会把自己已读的信息发送到服务器,服务器最终走到红框处的代码,这样的话不就出现发送方的同步端 给 接收方 发送了已读回执消息?这个逻辑是否合理?
    回复 有任何疑惑可以回复我~ 2023-06-09 10:10:33
  • 这个command的触发时机通常是:我从消息列表点进去某一个会话时触发。发送方和接受方的关系会转换,我点进去。我就是发送方 对方是接收方,对方点进去对方是发送方。
    你的意思是说 我有三端abc。a已经发送了已读了,服务端的数据库中已经更新了已读的seq,也把seq发给了对方,bc还有必要发吗?
    但是这个已读还有另外的触发场景:我一直在聊天页面不走,那每收到一条新消息就会发一次已读,这时候你abc三端都是挂在聊天页面不走,你到底是拒绝哪一端的操作呢?
    在一些特殊场景其实我们也需要比如密聊的场景,密聊就是指定和对方的某一端聊天。
    回复 有任何疑惑可以回复我~ 2023-06-09 10:35:27
conan老师 2023-06-09 07:12:40

同学真卷呐,一会看一下你的两个问题给你解答。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信