离线消息的处理机制

不管是消息队列的消息投递,还是单人实时聊天的消息投递,都需要通过应用层的超时,重传,确认,去重来保证消息的可靠投递。离线消息的处理,根据实际业务需求来做处理。一般来说,要保证用户的离线消息不丢失,用户上线后能够获取离线消息。

用户A给B发送一条消息,B不在线,离线消息存储的流程如下:

1.A发送消息给B,通过服务器server中转;

2.server查看B的状态为offline离线;(服务端会缓存用户的状态)

3.server将消息存储到数据库DB;

4.server返回用户A,消息发送成功;(对于发送方而言,消息存到DB,就认为发送成功)

用户B上线了,他要拉取A给他发送的离线消息,整体流程如下:

1.B向server拉取A给B发送的离线消息;  (通过uid_B,uid_A在离线消息表查询)

2.server从DB中获取离线消息;

3.server从DB中删除离线消息;

4.server将B所需要的离线消息返回给B.

这是最原始的场景。

 

实际上用户登录后,可能要拉取所有好友的离线信息,显然他不能一个一个的去拉取,原因是要减少拉取次数,一个合理的方式是按需拉取,即先拉取各个好友的离线消息数量,真正查看离线消息时,才往服务器发送拉取请求。

进一步优化拉取次数:一次拉取B的所有好友的离线消息,通过uid_B查询离线消息表,然后在客户端本地,根据sender_u

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值