RTCPeerConnection: canTrickleIceCandidates Eigenschaft

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

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

js
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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
canTrickleIceCandidates

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Has more compatibility info.

Siehe auch