# 《分布式IM系统》即时通讯SDK-第04节:消息监听与广播机制的设计与实现
作者:冰河
星球: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/1591eve0I (opens new window)
沉淀,成长,突破,帮助他人,成就自我。
- 本节难度:★★☆☆☆
- 本节重点:对即时通讯SDK中消息的监听与广播机制进行设计与实现,掌握SDK类库的设计和实现方法,并将其灵活应用到自身实际项目中。
- 课程视频:https://t.zsxq.com/1591eve0I (opens new window)
大家好,我是冰河~~
即时通讯SDK除了要实现发送单聊和群聊消息,以及获取用户在线状态相关的信息外,我们还要考虑在消息发送成功或者失败时,如何回传消息的发送结果,并且需要广播发送消息的结果状态。同时,即时通讯SDK要提供消息监听的接口,集成即时通讯SDK的大后端平台或者其他业务系统通过实现消息监听接口来实现消息监听机制。那要如何设计和实现呢?
# 一、前言
为了让分布式IM即时通讯系统中的大后端平台和其他业务系统能够快速接入IM即时通讯功能,我们专门设计和开发了即时通讯SDK,在即时通讯SDK内部,我们已经实现了发送单聊消息和群聊消息,并且也对外提供了获取用户在线状态相关的信息。除了这些功能外,在即时通讯SDK中,还需要我们实现哪些功能呢?
# 二、本节诉求
对即时通讯SDK中消息的监听与广播机制进行设计与实现,提供统一处理消息发送结果数据的数据模型、流程设计和具体实现,使得集成即时通讯SDK的大后端平台或者其他业务系统,无需关心发送消息后的结果数据的处理流程,只需要实现简单的监听器接口,即可根据自身业务需求来处理发送消息的结果数据模型。
# 三、流程设计
在即时通讯SDK中,有这样一种场景需要我们实现,试想:即时通讯SDK向消息中间件集群发送消息,即时通讯后端服务接收到消息中间件集群中的消息,向目标用户发送消息的结果状态如何处理?是发送成功了?还是发送失败了?对于离线用户的消息如何处理?这些都需要有一种消息的广播和监听机制来处理,那如何实现这些消息的广播和监听机制呢?
即时通讯SDK统一封装和实现消息的广播和监听的核心框架逻辑,对外提供消息监听的接口,并在接口中提供处理消息发送结果数据模型的方法,由集成即时通讯SDK的大后端平台或者其他业务系统实现消息监听的具体业务逻辑,也就是大后端平台或者其他业务系统实现消息监听的接口,并在具体实现方法中接收到消息发送的结果数据模型,根据具体需要来处理相关的业务逻辑。
整体流程如图4-1所示。
当即时通讯SDK发送消息并且需要回传结果数据时,会通过广播的方式来处理结果数据模型,同时,当即时通讯后端服务向用户终端发送消息后,会向消息中间件集群回传消息发送的结果数据,而即时通讯SDK接收到消息中间件集群中消息发送的结果数据,同样会通过广播的方式来处理结果数据模型,并且会在发送广播的方法中,调用监听器的方法来处理结果数据模型。
# 四、类结构设计
消息监听与广播机制的类结构设计如图4-2所示。
# 查看完整文章
加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码