WebRTC中的三角形:


這是一種最常見的情景,兩個瀏覽器同時從Web服務(wù)器中下載同一個WebRTC服務(wù)器中下載有WebRTC功能的Web程序。就像上面的圖展示的那樣。為什么會是三角形?因為這三個元素之間的信令路線和和媒體之間所構(gòu)成的形狀恰似一個三角形。兩個瀏覽器之間的通訊并不通過Web服務(wù)器,而是通過建立對等連接來實現(xiàn)音視頻媒體以及一些附加數(shù)據(jù)。
在WebRTC中我們常常把瀏覽器和服務(wù)器之間的連接成為信令,但是其實他并非指電話系統(tǒng)中的信令。信令在WebRTC中并沒有實現(xiàn)標(biāo)準(zhǔn)化。
由于信令沒有標(biāo)準(zhǔn)化,所以現(xiàn)在的信令被視為應(yīng)用程序的一部分。HTTP和WebScoket都可以作為傳輸信令的通道。野狗實時視頻通話技術(shù)在這部分使用的就是基于WebSocket的野狗實時數(shù)據(jù)同步來作為信令。
WebRTC中的梯形:



WebRTC梯形中采用的都是標(biāo)準(zhǔn)協(xié)議。例如:很多視頻會議系統(tǒng)用到的會話發(fā)起協(xié)議(SIP)或者Jingle。當(dāng)然,還可以采用專有的信令協(xié)議。
會話發(fā)起協(xié)議(Session Initiation Protocol,縮寫SIP)是一個由IETF MMUSIC工作組開發(fā)的協(xié)議,作為標(biāo)準(zhǔn)被提議用于建立,修改和終止包括視頻,語音,即時通信,在線游戲和虛擬現(xiàn)實等多種多媒體元素在內(nèi)的交互式用戶會話。
Jingle由Google及XMPP標(biāo)準(zhǔn)基金會設(shè)計。其多媒體流被設(shè)計用于RTP(實時傳輸協(xié)議)。若需要,可由NAT穿透輔助以使用ICE(交互式連接建立)。 FROM 維基百科
如果瀏覽器想和一個SIP客戶端(例如SIP電話)進(jìn)行視頻通話,首先要做的少就是從Web服務(wù)器下載帶有WebRTC代碼的網(wǎng)頁程序,在瀏覽器端向Web服務(wù)器發(fā)起音頻通話請求對象M,Web服務(wù)器把M發(fā)給SIP服務(wù)器,SIP服務(wù)器把請求M發(fā)給SIP客戶端(例如SIP電話)。SIP客戶端在成功接收請求之后會相應(yīng)另外一個請求對象S發(fā)給SIP服務(wù)器,SIP服務(wù)器把S發(fā)給Web服務(wù)器,Web服務(wù)器把S發(fā)給瀏覽器。在進(jìn)行外上面的步驟后,瀏覽器和SIP服務(wù)器開始進(jìn)行打洞,密鑰協(xié)商,媒體會話等操作。會話關(guān)閉的時候流程和建立鏈接的時候類似。這里不再復(fù)述。

采用Jingle協(xié)議實現(xiàn)WebRTC的功能:

整個過程和SIP模式相比除了Web服務(wù)器A和Web服務(wù)器B之間采用的協(xié)議不同,其他的基本相似。這里不再詳細(xì)說明。