# 《分布式IM系统》即时通讯SDK-第03节:在线状态的统一设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/15vHszPib (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★☆☆☆
  • 本节重点:对即时通讯SDK中获取用户在线状态相关的信息进行统一设计和实现,掌握SDK类库的设计和实现方法,并将其灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/15vHszPib (opens new window)

大家好,我是冰河~~

即时通讯SDK除了要实现发送单聊和群聊消息外,还有一些对外来说非常重要的方法,那就是获取用户的在线状态信息。但是,获取用户的在线状态时,又不能简单的返回一个标识用户是否在线的状态。那要如何设计和实现呢?

# 一、前言

即时通讯SDK是为大后端平台或者其他业务系统快速接入IM即时通讯功能而设计和开发的SDK工具包,既然即时通讯SDK是为快速接入IM即时通讯功能而设计和开发的SDK工具包,那即时通讯SDK肯定要对外提供发送单聊和群聊的方法,除了这些方法外,还需要提供哪些方法呢?

其实,在发送单聊和群聊消息时,即时通讯后端服务都是会为在线的用户直接推送消息,那业务系统里如何知道哪些用户在线,哪些用户离线呢?此时,就需要即时通讯SDK对外提供一些用户在线状态相关的方法。

# 二、本节诉求

对即时通讯SDK中获取用户在线状态相关的信息进行统一设计和实现,大后端平台或者其他业务系统对接IM即时通讯功能时,只需要引入即时通讯SDK,调用相关的方法即可获取用户的在线状态信息。

在正式设计和实现之前,我们要思考下对于即时通讯SDK来说,只是对外提供一个判断当前用户是否在线的方法是远远不够的。在某些场景下,我们还需要根据一批用户来筛选出在线的用户列表,根据一批用户来筛选出在线用户的ID与终端列表的对应关系等等。所以,在满足判断用户是否在线的基本诉求下,还需要实现根据一批用户来筛选出在线的用户列表和根据一批用户来筛选出在线用户的ID与终端列表的对应关系等等需求。

# 三、类结构设计

即时通讯SDK获取用户在线状态相关的类结构如图3-1所示。


可以看到,整体类结构还是比较简单的,在原来的基础上添加了获取用户状态相关的方法。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码