RTCPeerConnection: setConfiguration() Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2022.
Die setConfiguration() Methode der RTCPeerConnection Schnittstelle setzt die aktuelle Konfiguration der Verbindung basierend auf den in dem angegebenen Objekt enthaltenen Werten.
Dies ermöglicht es Ihnen, die von der Verbindung verwendeten ICE-Server sowie die zu verwendenden Transportprotokoll-Richtlinien zu ändern.
Der häufigste Anwendungsfall für diese Methode (und selbst dann wahrscheinlich kein sehr häufiger Anwendungsfall) besteht darin, die Menge der zu verwendenden ICE-Server zu ersetzen. Zwei mögliche Szenarien, in denen dies geschehen könnte:
- Die
RTCPeerConnectionwurde erstellt, ohne irgendwelche ICE-Server anzugeben. Wenn zum Beispiel derRTCPeerConnection()Konstruktor ohne Parameter aufgerufen wurde, müssten SiesetConfiguration()aufrufen, um ICE-Server hinzuzufügen, bevor die ICE-Verhandlung beginnen kann. - Eine Neuaushandlung der Verbindung ist erforderlich, und es muss aus irgendeinem Grund eine andere Menge von ICE-Servern verwendet werden.
Vielleicht ist der Benutzer in eine neue Region umgezogen, daher ist es notwendig, neue regionale ICE-Server zu verwenden.
In dieser Situation könnte man
setConfiguration()aufrufen, um zu neuen regionalen ICE-Servern zu wechseln und dann einen ICE-Neustart zu initiieren.
Hinweis: Sie können die Identitätsinformationen einer Verbindung nicht ändern, wenn sie bereits festgelegt wurden.
Syntax
setConfiguration(configuration)
Parameter
configuration-
Ein Objekt, das die festzulegenden Optionen bereitstellt. Die Änderungen sind nicht additiv; stattdessen ersetzen die neuen Werte die vorhandenen vollständig. Siehe
RTCPeerConnection()für weitere Informationen darüber, welche Optionen erlaubt sind.
Rückgabewert
Keiner (undefined).
Ausnahmen
InvalidAccessErrorDOMException-
Wird ausgelöst, wenn eine oder mehrere der in
configuration.iceServersangegebenen URLs ein TURN Server sind, aber keine vollständigen Anmeldeinformationen bereitgestellt werden (das heißt, entweder derusernameoder dascredentialfehlt, oder wenncredentialType"password"ist undcredentialkein String ist). Dies verhindert eine erfolgreiche Anmeldung am Server. InvalidModificationErrorDOMException-
Wird ausgelöst, wenn die
configurationgeänderte Identitätsinformationen enthält, aber die Verbindung bereits Identitätsinformationen spezifiziert hat. Dies geschieht, wennconfiguration.peerIdentityoderconfiguration.certificatesgesetzt sind und ihre Werte von der aktuellen Konfiguration abweichen. Dies kann auch ausgelöst werden, wenn Änderungen anconfiguration.bundlePolicyoderconfiguration.rtcpMuxPolicyoder anconfiguration.iceCandidatePoolSizevorgenommen werden, wennRTCPeerConnection.setLocalDescription()bereits aufgerufen wurde. InvalidStateErrorDOMException-
Wird ausgelöst, wenn die
RTCPeerConnectiongeschlossen ist. SyntaxErrorDOMException-
Wird ausgelöst, wenn die
configuration.iceServerskeine URLs enthält oder wenn einer der Werte in der Liste ungültig ist. NotSupportedErrorDOMException-
Wird ausgelöst, wenn
configuration.iceServerseine URL mit einem nicht unterstützten Schema enthält.
Beispiel
In diesem Beispiel wurde bereits festgestellt, dass ein ICE-Neustart erforderlich ist und dass die Verhandlung mit einem anderen ICE-Server durchgeführt werden muss.
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);
Zunächst wird ein neues Objekt restartConfig erstellt, das den neuen ICE-Server und seine Anmeldeinformationen spezifiziert.
Dies wird dann an setConfiguration() übergeben.
Die ICE-Verhandlung wird durch den Aufruf von restartIce() neu gestartet, was dazu führt, dass das nächste erstellte Angebot die neuen ICE-Serverinformationen enthält.
Von dort aus bearbeiten wir den Prozess wie gewohnt, indem die lokale Beschreibung auf das zurückgegebene Angebot gesetzt und dieses Angebot dann an den anderen Teilnehmer gesendet wird.
Spezifikationen
| Specification |
|---|
| WebRTC: Real-Time Communication in Browsers> # dom-rtcpeerconnection-setconfiguration> |
Browser-Kompatibilität
Loading…