[经典问题] IM系统中同步好友的状态

问题描述:

IM系统中同步好友的状态,IM有好友列表,也有群好友状态

场景分析:

1. 上线需要更新一次好友状态
2. 上线后,好友状态变更同步给我就行
3. 好友状态分为:上线,离线,离开,回来
4. 不同状态的实时性要求不同
5. 状态"离开"不好界定,比如:不操作3min认为是离开,那么这个状态同步不及时也行
6. "上线"这个状态比较关注,比如我关注的人上线,需要及时通知
7. "离线"即下线,用户关了软件,这种如果正在聊天,聊天窗口打开,那么他离线了我需要及时关注;列表中的好友,则定时通知就行;打开在线好友,有已经离线不在延迟通知的场景,需要先判断一下是否还在线后再开始聊天
8. 离开和回来 如果做得好,也可以区分连天中的和列表的用户
9. 进一个群好友列表需要查看一次好友状态
10. 扩展一下,软件不仅有状态需要同步,还有其他消息,有的及时比如别人发送的消息,有的不及时也可,比如广告等

场景归纳:

1. 刚上线,第一次打开群列表时 全量获取一次好友状态
2. 消息分为:及时消息,延迟消息
3. 及时消息:用户聊天信息;关注好友上线;正在聊天好友下线,离开,回来等
4. 延迟消息:列表中好友状态变化,广告等

方案实现:

1. 及时消息: 用双通道如WebSocket进行传输,状态变化好及时推送给关注的人; 
2. 延迟消息:可以用http,1-3min为间隔,全量获取
3. 获取获取可以出发一次延迟消息实现

解决思路:

1. 先分析实际场景,然后在实际场景中抽象出几类问题,技术方案去按照这几类问题解决就行
2. 注意点:不要先直接上方案,然后用场景去修改。比如:一想到状态同步就钻到方案中,做技术是为了解决问题,不是为了做一个完美的方案,也不存在完美的方案

参考:

QQ状态同步究竟是推还是拉?
https://www.w3cschool.cn/architectroad/architectroad-qq-status-consistency.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值