基本格式
pc = new RTCPeerConnection([configuration]);
dictionary RTCConfiguration {
sequence<RTCIceServer> iceServers;
RTCIceTransportPolicy iceTransportPolicy;
RTCBundlePolicy bundlePolicy;
RTCRtcpMuxPolicy rtcpMuxPolicy;
DOMString peerIdentity;
sequence<RTCCertificate> certificates;
[EnforceRange] octet iceCandidatePoolSize = 0;
};
iceServers
其有RTCIceServer組成。每個RTCIceServer都是一個ICE代理的服務。
屬性 | 含義 |
credential | 憑據,隻有TURN服務使用 |
credentialType | 憑據類型可以password或oauth |
urls | 使用者連接配接服務中的url數組 |
username | 使用者名,隻有TURN服務使用 |
這就是說我們在建立PeerConnection的時候可以建立很多的iceServer,也就是stun和turn服務,通過這個stun和turn服務可以檢測然後擷取到相應的反射位址和中繼位址,形成這些服務之後,它就可以進行連接配接性檢測它的優先級。
iceTransportPolicy
iceTransportPolicy有兩種政策,一種是''all"一種是“relay”,如果設定為all就支援host,也就是本機位址candidate,也就是穿越Nat反射後的candidate以及中繼的candidate; 如果是relay那就隻收集中繼的candidate,也就是中繼的通路
all:可以使用任何類型的候選者(表示host類型、srflx反射、relay中繼都支援)
relay: 隻使用中繼候選者(在真實的網絡情況下一般都使用relay,因為Nat穿越在中國很困難)
bundlePolicy
bundlePolicy的政策有幾種,分别是Balanced、max-compat、max-bundle;預設的是balanced也就是平衡型;
Balanced表示音頻與視訊使用各自的傳輸通道,它是分開的,如果有多路音頻與多路視訊,那麼音頻走音頻的傳輸通道,視訊走視訊的傳輸通道。
max-compat表示每個軌使用自己的傳輸通道(最大相容性),如果兩個音頻一個視訊那就三個通道,每個音頻都走自己的通道,每個視訊都走自己的通道
max-bundle都綁定到同一個傳輸通道,就将媒體的流用一個通道進行傳輸,這是WebRTC建議的方式,這樣對底層來說就比較簡單了,而且建立之後證書隻需要一個,而不需要一堆,否則的話,你每一個連接配接都需要一個證書,就非常耗時間。
rtcpMuxPolicy
該選項在收集ICE候選者時使用。
選項 | 說明 |
negotiate | 收集RTCP與RTP複用的ICE候選者,如果RTCP能複用就與RTP複用,如果不能複用,就将它們單獨使用。 |
require | 隻能收集RTCP與RTP複用的ICE候選者,如果RTCP不能複用,則失敗。 |
這裡指的是rtcp的複用政策有幾種,
peerIdentity
就是一個标示身份的字元串,不用過多讨論
certificates
certificates表示一些證書,每一個連通的候選者都需要一個證書,如果你有多個連接配接,就有多個證書,一般情況下複用隻用一個證書,這樣可以增加建成整個傳輸的速度。
我們可以提供每個連接配接的證書也可以不提供,不提供的話就會自動産生。是以這個證書的話一般我們也不會設定。
iceCandidatePoolSize
16位的整數值,用于指定預取的ICE候選者的個數。