RTCPeerConnection: canTrickleIceCandidates Eigenschaft
Die canTrickleIceCandidates
schreibgeschützte Eigenschaft der Schnittstelle RTCPeerConnection
gibt einen booleschen Wert zurück, der anzeigt, ob der entfernte Peer trickled ICE-Kandidaten akzeptieren kann.
ICE-Trickling ist der Prozess des fortfahrenden Sendens von Kandidaten, nachdem das ursprüngliche Angebot oder die Antwort bereits an den anderen Peer gesendet wurde.
Diese Eigenschaft wird erst gesetzt, nachdem RTCPeerConnection.setRemoteDescription()
aufgerufen wurde. Idealerweise bietet Ihr Signalprotokoll eine Möglichkeit, die Unterstützung des Trickling zu erkennen, sodass Sie nicht auf diese Eigenschaft angewiesen sind.
Ein WebRTC-Browser unterstützt immer Trickle ICE. Wenn Trickling nicht unterstützt wird oder Sie es nicht feststellen können, können Sie nach einem falsy Wert für diese Eigenschaft suchen und dann warten, bis der Wert von iceGatheringState
auf "completed"
wechselt, bevor Sie das erste Angebot erstellen und senden.
So enthält das Angebot alle Kandidaten.
Wert
Ein boolescher Wert, der true
ist, wenn der entfernte Peer trickled ICE-Kandidaten akzeptieren kann, und false
, wenn nicht.
Wenn kein entfernten Peer festgelegt wurde, ist dieser Wert null
.
Hinweis: Der Wert dieser Eigenschaft wird bestimmt, sobald der lokale Peer RTCPeerConnection.setRemoteDescription()
aufgerufen hat;
die bereitgestellte Beschreibung wird vom ICE-Agenten verwendet, um festzustellen, ob der entfernte Peer trickled ICE-Kandidaten unterstützt.
Beispiele
const pc = new RTCPeerConnection();
function waitToCompleteIceGathering(pc) {
return new Promise((resolve) => {
pc.addEventListener(
"icegatheringstatechange",
(e) =>
e.target.iceGatheringState === "complete" &&
resolve(pc.localDescription),
);
});
}
// The following code might be used to handle an offer from a peer when
// it isn't known whether it supports trickle ICE.
async function newPeer(remoteOffer) {
await pc.setRemoteDescription(remoteOffer);
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
if (pc.canTrickleIceCandidates) return pc.localDescription;
const answer = await waitToCompleteIceGathering(pc);
sendAnswerToPeer(answer); //To peer via signaling channel
}
// Handle error with try/catch
pc.addEventListener(
"icecandidate",
(e) => pc.canTrickleIceCandidates && sendCandidateToPeer(e.candidate),
);
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-cantrickleicecandidates |
Browser-Kompatibilität
BCD tables only load in the browser