suzunshou/suzunshou.github.io

IM - 消息可靠性的解决 | Bug Free

Opened this issue · 0 comments

https://bug-free.cn/2019/09/14/IM-%E6%B6%88%E6%81%AF%E5%8F%AF%E9%9D%A0%E6%80%A7%E7%9A%84%E8%A7%A3%E5%86%B3/

当消息下推到客户端的时候,服务端对于推送状态是无感知的。在用户建立连接的时候,在Channel中缓存并初始化tid为0,每一条消息下推的时候,都会设置一个自增tid,并将等待Ack的消息存储在队列中,一旦某个tid被Ack了就将该消息移出队列。 也有一些情况,比如超过设置的期望时间,还没有Ack,则可以认为该消息丢失了,则启动重新下推的操作。 ACK的数据结构可以定义为: 123456789101