方案介紹
不含UI集成方案封裝了語聊房API,提供了房間管理、麥位管理、背景音樂、音效、調(diào)音臺(tái)等常見功能API,不包含任何UI操作。使用該方案同樣無需深入理解模型層邏輯,但更加靈活,支持自定義實(shí)現(xiàn)。
方案架構(gòu)說明
在不含UI集成方案中,集成不含UI組件庫后通過調(diào)整RoomService接口的業(yè)務(wù)實(shí)現(xiàn),可以使用自身的IM或者已有的服務(wù)端交互協(xié)議完成。下圖中的虛線部分均可以由開發(fā)者自己實(shí)現(xiàn)。
接口說明
ARTCVoiceRoomEngine:語聊房場(chǎng)景化API,每個(gè)API封裝了完整的業(yè)務(wù)邏輯,每個(gè)API的實(shí)現(xiàn)可以參考下文的時(shí)序圖。
ARTCRoomServiceInterface:房間服務(wù)接口,每個(gè)接口職責(zé)單一,對(duì)房間信息和內(nèi)部狀態(tài)進(jìn)行查詢、更新、通知等操作。我們提供了默認(rèn)的實(shí)現(xiàn)類ARTCRoomServiceImp,該類通過App業(yè)務(wù)服務(wù)器提供的服務(wù)和互動(dòng)消息SDK進(jìn)行實(shí)現(xiàn),我們同樣也開源了業(yè)務(wù)服務(wù)器的源碼,可以直接參考或二次開發(fā)。
ARTCRtcService:根據(jù)實(shí)時(shí)音視頻SDK的最佳實(shí)踐封裝而成的API,基于不同的場(chǎng)景化(語聊、KTV、通話等)配置各種參數(shù)和調(diào)用相應(yīng)的實(shí)時(shí)音視頻SDK的API。
業(yè)務(wù)實(shí)現(xiàn)流程
項(xiàng)目構(gòu)成
本業(yè)務(wù)的實(shí)現(xiàn)主要涉及到如下六部分。
AUI:與用戶交互的界面。
Engine:語聊房場(chǎng)景化API,每個(gè)API封裝了完整的業(yè)務(wù)邏輯,詳細(xì)的API介紹參考API參考。
RoomService:房間服務(wù),對(duì)房間信息和內(nèi)部狀態(tài)進(jìn)行查詢、更新、通知等操作。我們提供了接口ARTCRoomServiceInterface和默認(rèn)的實(shí)現(xiàn)類ARTCRoomServiceImp,該類通過App業(yè)務(wù)服務(wù)器提供的服務(wù)和互動(dòng)消息SDK進(jìn)行實(shí)現(xiàn)。
RTCService:封裝了阿里云的實(shí)時(shí)音視頻服務(wù),提供上麥、推流、下麥和停止推流等操作。
AppServer:AppServer基于函數(shù)計(jì)算(FC)等方式為AUI Kits低代碼集成工具提供了一套快捷部署、靈活定制的后臺(tái)服務(wù)。本項(xiàng)目中作為服務(wù)端負(fù)責(zé)數(shù)據(jù)庫的維護(hù)和IM群組的設(shè)置。
互動(dòng)消息:阿里云的IM Server服務(wù)。負(fù)責(zé)創(chuàng)建和維護(hù)IM群組,對(duì)用戶上麥和下麥狀態(tài)進(jìn)行廣播。
業(yè)務(wù)流程
語聊房場(chǎng)景按照業(yè)務(wù)順序分為如下六個(gè)流程。
用戶創(chuàng)建房間。在該部分用戶創(chuàng)建房間和IM群組,并且創(chuàng)建者成為房主自動(dòng)進(jìn)入房間界面。
用戶進(jìn)入房間。在該部分用戶進(jìn)入已經(jīng)創(chuàng)建好的房間,并加入IM群組。可以在房間內(nèi)發(fā)送文字消息,和收聽已經(jīng)上麥的用戶的實(shí)時(shí)音頻。
用戶請(qǐng)求上麥。在該部分用戶申請(qǐng)上麥。
用戶下麥操作。在這部分用戶執(zhí)行下麥操作。
用戶退出房間。在這部分用戶退出房間。
用戶解散房間。在這部分房主對(duì)房間進(jìn)行了解散。
接下來我們通過時(shí)序圖,分別對(duì)這六部分進(jìn)行詳細(xì)的介紹。其中黃色部分(AUI、AppServer和互動(dòng)消息)可以開發(fā)者靈活修改進(jìn)行替換,藍(lán)色部分封裝好了語聊房場(chǎng)景API服務(wù),用戶可以直接使用。
用戶創(chuàng)建房間
這部分主要介紹了用戶創(chuàng)建語聊房的流程。主播通過AUI的createRoom接口向AppServer請(qǐng)求創(chuàng)建語聊房,AppServer通過阿里云視頻直播API創(chuàng)建IM群組。AppServer在數(shù)據(jù)庫創(chuàng)建語聊房相關(guān)信息包括IM群組id和語聊房上麥情況的信息。之后用戶成為房主自動(dòng)進(jìn)入房間。
用戶進(jìn)入房間
這部分主要介紹用戶進(jìn)入房間的流程。用戶需要進(jìn)入房間獲取房間的詳細(xì)信息,包括已經(jīng)上麥的成員列表。用戶也會(huì)加入IM群組,并可以在房間中發(fā)送消息進(jìn)行互動(dòng)。
用戶請(qǐng)求上麥
該部分主要介紹用戶請(qǐng)求上麥的流程。用戶需要發(fā)起上麥的請(qǐng)求,然后通過一列接口在AppServer持久化,然后通過IM群組進(jìn)行廣播,成功上麥后通過RTCService向阿里云實(shí)時(shí)音視頻應(yīng)用推送實(shí)時(shí)音頻。
用戶下麥
該部分主要介紹用戶下麥的流程。用戶進(jìn)行下麥操作,然后通過一列接口在AppServer持久化退出麥位,成功下麥后停止向阿里云實(shí)時(shí)音視頻應(yīng)用推送實(shí)時(shí)音頻,然后通過IM群組進(jìn)行下麥廣播。
用戶退出房間
該部分主要介紹用戶退出房間的流程。用戶退出房間前如果用戶處于連麥狀態(tài),則先執(zhí)行用戶下麥流程,然后退出IM群組,退出房間。
房主解散房間
該部分主要介紹房主解散房間的流程。房主解散房間會(huì)通過AppServer將房間狀態(tài)改為解散狀態(tài)并持久化到數(shù)據(jù)庫,然后再IM群組中廣播群組解散的消息。