WebRTC中的三角形和梯形
這是一種最常見的情景,兩個(gè)瀏覽器同時(shí)從Web服務(wù)器中下載同一個(gè)WebRTC服務(wù)器中下載有WebRTC功能的Web程序。就像上面的圖展示的那樣。為什么會(huì)是三角形?因?yàn)檫@三個(gè)元素之間的信令路線和和媒體之間所構(gòu)成的形狀恰似一個(gè)三角形。兩個(gè)瀏覽器之間的通訊并不通過Web服務(wù)器,而是通過建立對(duì)等連接來實(shí)現(xiàn)音視頻媒體以及一些附加數(shù)據(jù)。
在WebRTC中我們常常把瀏覽器和服務(wù)器之間的連接成為信令,但是其實(shí)他并非指電話系統(tǒng)中的信令。信令在WebRTC中并沒有實(shí)現(xiàn)標(biāo)準(zhǔn)化。
由于信令沒有標(biāo)準(zhǔn)化,所以現(xiàn)在的信令被視為應(yīng)用程序的一部分。HTTP和WebScoket都可以作為傳輸信令的通道。野狗實(shí)時(shí)視頻通話技術(shù)在這部分使用的就是基于WebSocket的野狗實(shí)時(shí)數(shù)據(jù)同步來作為信令。
WebRTC中的梯形:
WebRTC梯形中采用的都是標(biāo)準(zhǔn)協(xié)議。例如:很多視頻會(huì)議系統(tǒng)用到的會(huì)話發(fā)起協(xié)議(SIP)或者Jingle。當(dāng)然,還可以采用專有的信令協(xié)議。
會(huì)話發(fā)起協(xié)議(Session Initiation Protocol,縮寫SIP)是一個(gè)由IETF MMUSIC工作組開發(fā)的協(xié)議,作為標(biāo)準(zhǔn)被提議用于建立,修改和終止包括視頻,語音,即時(shí)通信,在線游戲和虛擬現(xiàn)實(shí)等多種多媒體元素在內(nèi)的交互式用戶會(huì)話。
Jingle由Google及XMPP標(biāo)準(zhǔn)基金會(huì)設(shè)計(jì)。其多媒體流被設(shè)計(jì)用于RTP(實(shí)時(shí)傳輸協(xié)議)。若需要,可由NAT穿透輔助以使用ICE(交互式連接建立)。 FROM 維基百科
如果瀏覽器想和一個(gè)SIP客戶端(例如SIP電話)進(jìn)行視頻通話,首先要做的少就是從Web服務(wù)器下載帶有WebRTC代碼的網(wǎng)頁程序,在瀏覽器端向Web服務(wù)器發(fā)起音頻通話請(qǐng)求對(duì)象M,Web服務(wù)器把M發(fā)給SIP服務(wù)器,SIP服務(wù)器把請(qǐng)求M發(fā)給SIP客戶端(例如SIP電話)。SIP客戶端在成功接收請(qǐng)求之后會(huì)相應(yīng)另外一個(gè)請(qǐng)求對(duì)象S發(fā)給SIP服務(wù)器,SIP服務(wù)器把S發(fā)給Web服務(wù)器,Web服務(wù)器把S發(fā)給瀏覽器。在進(jìn)行外上面的步驟后,瀏覽器和SIP服務(wù)器開始進(jìn)行打洞,密鑰協(xié)商,媒體會(huì)話等操作。會(huì)話關(guān)閉的時(shí)候流程和建立鏈接的時(shí)候類似。這里不再復(fù)述。
采用Jingle協(xié)議實(shí)現(xiàn)WebRTC的功能:
整個(gè)過程和SIP模式相比除了Web服務(wù)器A和Web服務(wù)器B之間采用的協(xié)議不同,其他的基本相似。這里不再詳細(xì)說明。