如上圖所示包含有五個(gè)角色,分別是Client A、Client A對(duì)應(yīng)的Media Server、IM Server、Client B對(duì)應(yīng)的Media Server、Client B。Client A是通信的發(fā)起方,IM Server就是我們的Signal Server。在這個(gè)架構(gòu)里面,我們引入Pub/Sub模型來實(shí)現(xiàn)解耦,下面將分兩部分講解。
Pub過程:Client A會(huì)利用Smart DNS直接找到自己對(duì)應(yīng)的Media Server,然后調(diào)用該Media Server上開放的一個(gè)HTTP接口,調(diào)用該接口是為了傳遞傳Token、Room ID/Channel ID,以及交換SDP,這個(gè)在后面會(huì)詳細(xì)解釋。調(diào)用完之后,Media Server會(huì)返回該Media Server的IP地址和Client A在Media Server上注冊(cè)后所分配的Resource ID,Resource ID是Client A在Media Server上唯一的身份標(biāo)識(shí)。Client A接收到Media Server返回的信息后就可以直接與Media Server建立RTC連接,接著就可以開始利用信令通道了。之后IM Server要將Client A呼叫Client B的指令Push給Client B,并且會(huì)將Media Server返回給Client A的信息直接Send給Client B。此時(shí),Pub過程就完成了。
Sub過程:與前面相同,Client B也要通過Smart DNS找到一個(gè)相對(duì)來說質(zhì)量最好的Media Server,然后調(diào)用其另外一個(gè)接口將剛才傳過來的信息告訴這個(gè)Media Server。當(dāng)Client B對(duì)應(yīng)的Media Server拿到了Client A對(duì)應(yīng)的Media Server的信息后,由Resource ID就可以知道要將Client A和Client B之間建立連接,在內(nèi)部建立關(guān)聯(lián)后返回一個(gè)ACK,說明已經(jīng)調(diào)用成功。一旦Client A和Client B建立RTC連接成功后,Client A對(duì)應(yīng)的Media Server和Client B對(duì)應(yīng)的Media Server就建立起了級(jí)聯(lián)。
當(dāng)RTC的通道連接建立成功后,去中心化完成,此時(shí)我們就完成了Media Server和Signal Server之間的解耦。
總結(jié)一下,融云的RTC建連過程采用了極簡(jiǎn)的接口設(shè)計(jì)。如上述的時(shí)序圖,有幾次HTTP調(diào)用實(shí)際上全都是通過一個(gè)HTTP接口來實(shí)現(xiàn)的,而這一個(gè)HTTP接口通過傳遞不同的參數(shù)就非常簡(jiǎn)單的實(shí)現(xiàn)了發(fā)布/取消發(fā)布流,SFU和MCU的訂閱/取消訂閱。
-
HTTP
+關(guān)注
關(guān)注
0文章
510瀏覽量
31322 -
RTC
+關(guān)注
關(guān)注
2文章
541瀏覽量
66717
原文標(biāo)題:新音響精選系列圖書即將出版,現(xiàn)有少量廣告位預(yù)留!
文章出處:【微信號(hào):new_audiophile,微信公眾號(hào):新音響】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論