RTCPeerConnection: setConfiguration() 方法
RTCPeerConnection 介面的 setConfiguration() 方法根據指定物件中包含的值來設定連線的當前配置。這允許您更改連線使用的 ICE 伺服器以及使用的傳輸策略。
此方法最常見的用例(即使如此,也可能不是一個非常常見的用例)是替換要使用的 ICE 伺服器集。可能執行此操作的兩個潛在場景是:
RTCPeerConnection在未指定任何 ICE 伺服器的情況下被例項化。例如,如果未使用任何引數呼叫RTCPeerConnection()建構函式,則必須在 ICE 協商開始之前呼叫setConfiguration()來新增 ICE 伺服器。- 需要重新協商連線,並且出於某種原因需要使用不同的 ICE 伺服器集。例如,使用者可能已移至新區域,因此需要使用新的區域 ICE 伺服器。在這種情況下,可以呼叫
setConfiguration()來切換到新的區域 ICE 伺服器,然後啟動 ICE 重啟。
注意: 一旦設定了連線的身份資訊,就無法更改它。
語法
setConfiguration(configuration)
引數
configuration-
提供要設定的選項的物件。更改不是累加的;而是,新值會完全替換現有值。有關允許的選項的資訊,請參閱
RTCPeerConnection()。
返回值
無(undefined)。
異常
InvalidAccessErrorDOMException-
如果在
configuration.iceServers中指定的 URL 中有一個或多個是 TURN 伺服器,但未提供完整的登入資訊(即,缺少username或credential,或者如果credentialType是"password"且credential不是字串),則會丟擲此錯誤。這會阻止成功登入伺服器。 InvalidModificationErrorDOMException-
如果
configuration包含已更改的身份資訊,但連線已指定身份資訊,則會丟擲此錯誤。如果設定了configuration.peerIdentity或configuration.certificates並且它們的值與當前配置不同,則會發生這種情況。如果更改了configuration.bundlePolicy或configuration.rtcpMuxPolicy,或者更改了configuration.iceCandidatePoolSize(並且RTCPeerConnection.setLocalDescription()已被呼叫),也可能丟擲此錯誤。 InvalidStateErrorDOMException-
如果
RTCPeerConnection已關閉,則丟擲此異常。 SyntaxErrorDOMException-
如果
configuration.iceServers不包含任何 URL,或者列表中的某個值無效,則會丟擲此錯誤。 NotSupportedErrorDOMException-
如果
configuration.iceServers包含的 URL 的方案不受支援,則會丟擲此錯誤。
示例
在此示例中,已確定需要 ICE 重啟,並且需要使用不同的 ICE 伺服器進行協商。
const restartConfig = {
iceServers: [
{
urls: "turn:asia.turn-server.net",
username: "allie@oopcode.com",
credential: "topsecretpassword",
},
],
};
myPeerConnection.setConfiguration(restartConfig);
myPeerConnection.restartIce();
myPeerConnection
.createOffer() // restartIce() causes iceRestart to be set true
.then((offer) => myPeerConnection.setLocalDescription(offer))
.then(() => {
// send the offer to the other peer using the signaling server
})
.catch(window.reportError);
首先,建立一個新物件 restartConfig,指定新的 ICE 伺服器及其憑據。然後將其傳遞給 setConfiguration()。透過呼叫 restartIce() 來重啟 ICE 協商,這會導致建立的下一個 offer 包含新的 ICE 伺服器資訊。從那裡,我們按常規處理流程,將本地描述設定為返回的 offer,然後將該 offer 傳送給另一方。
規範
| 規範 |
|---|
| WebRTC:瀏覽器中的即時通訊 # dom-rtcpeerconnection-setconfiguration |
瀏覽器相容性
載入中…