WebRTC知識分享 信令服務

2021-07-05 09:14:36 字數 1407 閱讀 8991

webrtc支援點對點通訊,但是webrtc仍然需要服務端,因為:

1,為了協調通訊過程客戶端之間需要交換元資料,如乙個客戶端找到另乙個客戶端以及通知另乙個客戶端開始通訊.

1,確定本地**條件,如解析度,編譯碼能力,這些需要在offer和answer中用到.

2,取到應用程式所在機器的網路位址,即稱作candidates.

信令就是協調通訊的過程,為了建立乙個webrtc的通訊過程,客戶端需要交換如下資訊:

2,處理錯誤的訊息.

4,網路資料:對方的公網ip,埠,內網ip,埠.

5,......

信令處理過程需要客戶端能夠來回傳遞訊息,這個過程在webrtc裡面是沒有實現的,需要您自己建立。

一旦信令服務建立好了,兩個客戶端之間建立了連線,理論上他們就可以使用rtcdatachannel進行點對點通訊了,這樣可以減輕信令服務的壓力和訊息傳遞的延遲,

元資料是通過信令伺服器中**給另乙個客戶端,但是對於流**資料,一旦會話建立,rtcpeerconnection將首先嘗試使用點對點連線.

簡單一點說就是:每個客戶端都有乙個唯一的位址,他能用來和其他客戶端進行通訊和資料交換.

現實生活中客戶端都位於乙個或多個nat之後,或者一些防毒軟體還阻止了某些埠和協議,或者在公司還有防火牆或**,等等,

webrtc就是通過 ice這套框架來處理複雜的網路環境的,如果想啟用這個功能,你必須讓你得應用程式傳ice伺服器的url給rtcpeerconnection,描述如下:

ice試著找最好的路徑來讓客戶端建立連線,他會嘗試所有可能的選項,然後選擇最合適的方案,ice首先嘗試p2p連線,如果失敗就會通過turn伺服器進行轉接.

換乙個說法就是:

1,stun伺服器是用來取外網位址的.

2,turn伺服器是在p2p失敗時進行**的.

每個turn伺服器都支援stun,ice處理複雜的nat設定,同時nat打洞要求不止乙個公網ip和埠.

一旦rtcpeerconnection取到了所要的資訊,ice過程就自動發生了,rtcpeerconnection使用ice框架取到兩點之間最好的路徑,當然這個過程離不開stun和turn的支援.

nat的作用就是提供內外網埠的對映,因為在公網上兩個內網客戶端要建立直接連線就不許先知道彼此對應的公網位址和埠,這時候知道對方內網ip和位址是沒用的。而stun的作用就是讓客戶端發現自己的公網ip和埠,所以負載不大,

因為turn伺服器是在公網上,所以他能被各個客戶端找到,另外turn伺服器**的是資料流,很占用頻寬和資源.

補充:打洞的原理理解了其實很簡單,主要思路就是通過stun伺服器獲取自己的ip,port及nat資訊,然後通過信令伺服器交換這些資訊,最後兩客戶端根據各自得到的ip,port,nat資訊進行相應的穿透,stun方式不能完全解決p2p問題,所以後面出現了ice,而libjingle就是ice思想的具體實現。

用node js 搭建 webrtc 信令服務

0 webrtc開源專案,基本只有流 部分,而沒有信令部分,裡面的example是有信令,不過是google的,不太合用,還要裝乙個google的伺服器,貌似很是龐大,如果功能簡單,只是打 考慮自行開發乙個 小型信令伺服器。node v6.9.1 linux x64.tar.xz 2 解壓安裝包到 ...

搭建 webrtc 信令伺服器

在ubuntu linux 安裝的具體步驟也很簡單 1 安裝需要的庫檔案 sudo apt get install nodejs sudo npm install g npmsudo apt get install nodejs legacysudo npm g install grunt clin...

Webrtc知識分享 前言

webrtc 專案需要做以下幾件事情 2 得到網路資訊,如ip位址和埠,通過網路和其它webrtc客戶端交換資料,解決防火牆的nat 的問題。3 協調訊號來報告錯誤,啟動或關閉會話。4 交換 和客戶端資訊,處理如解析度和編碼解碼器問題。5 資料流通訊。對客戶端呼叫來說主要就是做四件事情 webrtc...