Signatur
Beschreibung
Die Methode getConfiguration() liefert eine Momentaufnahme der Einstellungen, mit denen eine RTCPeerConnection aktuell arbeitet. Dazu gehören das Array iceServers (STUN-/TURN-Server), iceTransportPolicy, bundlePolicy, rtcpMuxPolicy, iceCandidatePoolSize und certificates.
Praktisch ist die Methode vor allem, um die Konfiguration vor einer Änderung auszulesen. Ein typisches Muster sieht so aus: aktuelle Konfiguration holen, einzelne Felder anpassen (z. B. neue TURN-Zugangsdaten eintragen) und das Ergebnis mit setConfiguration() zurückschreiben. Danach folgt oft ein ICE-Neustart mit restartIce(). Auch für Debugging und Logging lässt sich so prüfen, welche Werte der Browser wirklich übernommen hat.
Das zurückgegebene Objekt ist eine Kopie. Wer es verändert, ändert die Verbindung dadurch nicht. Außerdem enthält es auch Standardwerte, die der Browser für Optionen gesetzt hat, die beim Konstruktor nicht angegeben wurden.
Rückgabewert
iceServers, iceTransportPolicy ("all" | "relay"), bundlePolicy, rtcpMuxPolicy, iceCandidatePoolSize und certificates.Beispiele
Aktuelle Konfiguration auslesen
const pc = new RTCPeerConnection({
iceServers: [{ urls: 'stun:stun.l.google.com:19302' }]
});
const config = pc.getConfiguration();
console.log(config.iceServers[0].urls);
console.log(config.iceTransportPolicy);
console.log(config.bundlePolicy);
TURN-Zugangsdaten erneuern und ICE neu starten
const refreshTurnCredentials = async (pc) => {
// Neue, zeitlich begrenzte Zugangsdaten vom eigenen Server holen
const res = await fetch('/api/turn-credentials');
const { username, credential } = await res.json();
const config = pc.getConfiguration();
config.iceServers = [
{ urls: 'stun:stun.example.com:3478' },
{ urls: 'turn:turn.example.com:3478', username, credential }
];
pc.setConfiguration(config);
pc.restartIce(); // Neue Kandidaten mit den neuen Servern sammeln
};
Nur Relay erzwingen (Privatsphäre-Modus)
const pc = new RTCPeerConnection({
iceServers: [{ urls: 'turn:turn.example.com', username: 'u', credential: 'p' }]
});
const enableRelayOnly = () => {
const config = pc.getConfiguration();
if (config.iceTransportPolicy !== 'relay') {
config.iceTransportPolicy = 'relay';
pc.setConfiguration(config);
pc.restartIce();
}
console.log('Policy:', pc.getConfiguration().iceTransportPolicy);
};
enableRelayOnly();
// Wichtig · Fallstricke
- Das Ergebnis ist eine Kopie. Änderungen daran wirken erst, wenn du sie mit
setConfiguration()zurückschreibst. - Einige Felder lassen sich nach dem Erzeugen der Verbindung nicht mehr ändern, z. B.
certificates,bundlePolicy,rtcpMuxPolicyundpeerIdentity. Wer beisetConfiguration()abweichende Werte übergibt, bekommt einenInvalidModificationError. MitgetConfiguration()als Basis bleiben diese Werte automatisch gleich. - Nach
close()liefert die Methode weiterhin die zuletzt gültige Konfiguration.setConfiguration()wirft dann jedoch einenInvalidStateError. - Sicherheit:
iceServerskann TURN-Zugangsdaten (username,credential) enthalten. Schreib das Objekt nicht ungefiltert in Logs oder Fehlerberichte. - Kompatibilität: In allen modernen Browsern verfügbar. Ältere Versionen zeigen Standardwerte nicht immer vollständig an (z. B.
iceCandidatePoolSize). Prüf deshalb nicht blind auf jedes Feld.