不含UI集成方案封装了语聊房API,提供了房间管理、麦位管理、背景音乐、音效、调音台等常见功能API,不包含任何UI操作。使用该方案同样无需深入理解模型层逻辑,但更加灵活,支持自定义实现。
方案架构说明
在不含UI集成方案中,集成不含UI组件库后通过调整RoomService接口的业务实现,可以使用自身的IM或者已有的服务端交互协议完成。下图中的虚线部分均可以由开发者自己实现。
接口说明
ARTCVoiceRoomEngine:语聊房场景化API,每个API封装了完整的业务逻辑,每个API的实现可以参考下文的时序图。
ARTCRoomServiceInterface:房间服务接口,每个接口职责单一,对房间信息和内部状态进行查询、更新、通知等操作。我们提供了默认的实现类ARTCRoomServiceImp,该类通过App业务服务器提供的服务和互动消息SDK进行实现,我们同样也开源了业务服务器的源码,可以直接参考或二次开发。
ARTCRtcService:根据实时音视频SDK的最佳实践封装而成的API,基于不同的场景化(语聊、KTV、通话等)配置各种参数和调用相应的实时音视频SDK的API。
业务实现流程
项目构成
本业务的实现主要涉及到如下六部分。
AUI:与用户交互的界面。
Engine:语聊房场景化API,每个API封装了完整的业务逻辑,详细的API介绍参考API参考。
RoomService:房间服务,对房间信息和内部状态进行查询、更新、通知等操作。我们提供了接口ARTCRoomServiceInterface和默认的实现类ARTCRoomServiceImp,该类通过App业务服务器提供的服务和互动消息SDK进行实现。
RTCService:封装了阿里云的实时音视频服务,提供上麦、推流、下麦和停止推流等操作。
AppServer:AppServer基于函数计算(FC)等方式为AUI Kits低代码集成工具提供了一套快捷部署、灵活定制的后台服务。本项目中作为服务端负责数据库的维护和IM群组的设置。
互动消息:阿里云的IM Server服务。负责创建和维护IM群组,对用户上麦和下麦状态进行广播。
业务流程
语聊房场景按照业务顺序分为如下六个流程。
用户创建房间。在该部分用户创建房间和IM群组,并且创建者成为房主自动进入房间界面。
用户进入房间。在该部分用户进入已经创建好的房间,并加入IM群组。可以在房间内发送文字消息,和收听已经上麦的用户的实时音频。
用户请求上麦。在该部分用户申请上麦。
用户下麦操作。在这部分用户执行下麦操作。
用户退出房间。在这部分用户退出房间。
用户解散房间。在这部分房主对房间进行了解散。
接下来我们通过时序图,分别对这六部分进行详细的介绍。其中黄色部分(AUI、AppServer和互动消息)可以开发者灵活修改进行替换,蓝色部分封装好了语聊房场景API服务,用户可以直接使用。
用户创建房间
这部分主要介绍了用户创建语聊房的流程。主播通过AUI的createRoom接口向AppServer请求创建语聊房,AppServer通过阿里云视频直播API创建IM群组。AppServer在数据库创建语聊房相关信息包括IM群组id和语聊房上麦情况的信息。之后用户成为房主自动进入房间。
用户进入房间
这部分主要介绍用户进入房间的流程。用户需要进入房间获取房间的详细信息,包括已经上麦的成员列表。用户也会加入IM群组,并可以在房间中发送消息进行互动。
用户请求上麦
该部分主要介绍用户请求上麦的流程。用户需要发起上麦的请求,然后通过一列接口在AppServer持久化,然后通过IM群组进行广播,成功上麦后通过RTCService向阿里云实时音视频应用推送实时音频。
用户下麦
该部分主要介绍用户下麦的流程。用户进行下麦操作,然后通过一列接口在AppServer持久化退出麦位,成功下麦后停止向阿里云实时音视频应用推送实时音频,然后通过IM群组进行下麦广播。
用户退出房间
该部分主要介绍用户退出房间的流程。用户退出房间前如果用户处于连麦状态,则先执行用户下麦流程,然后退出IM群组,退出房间。
房主解散房间
该部分主要介绍房主解散房间的流程。房主解散房间会通过AppServer将房间状态改为解散状态并持久化到数据库,然后再IM群组中广播群组解散的消息。