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