RTCPeerConnection.canTrickleIceCandidates

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.

La propiedad de RTCPeerConnection de solo lectura canTrickleIceCandidates devuelve un valor booleano que indica si el par remoto puede aceptar o no candidatos Trickled ICE.

ICE trickling (establecimiento de conectividad interactiva) es el proceso de continuar enviando candidatos después de que la oferta inicial o la respuesta ya se hayan enviado al otro par.

Esta propiedad solo se establece después de haber llamado a RTCPeerConnection.setRemoteDescription(). Idealmente, su protocolo de señalización proporciona una forma de detectar el soporte de interactividad, por lo que no necesitara esta propiedad. Un navegador WebRTC siempre admitirá ICE trickling. Si no es compatible, o no puede saberlo, puede buscar un valor falso para esta propiedad y luego esperar hasta que cambie el valor de iceGatheringState a "completed" antes de crear y enviar la oferta inicial. De esa forma, la oferta contiene todos los candidatos.

Valor

Un valor booleano que es true si el par remoto puede aceptar candidatos trickled ICE y false si no puede. Si no se ha establecido un par remoto, este valor es null.

Nota: El valor de esta propiedad se determina una vez que el par local ha llamado a RTCPeerConnection.setRemoteDescription(); el agente ICE utiliza la descripción proporcionada para determinar si el par remoto admite o no candidatos trickled ICE.

Ejemplos

js
const pc = new RTCPeerConnection();

function waitToCompleteIceGathering(pc) {
  return new Promise((resolve) => {
    pc.addEventListener(
      "icegatheringstatechange",
      (e) =>
        e.target.iceGatheringState === "complete" &&
        resolve(pc.localDescription),
    );
  });
}

// El siguiente código podría usarse para manejar una oferta de un par
// cuando no se sabe si es compatible con 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); //Para mirar a través del canal de señalización
}
// Manejar el error con try/catch

pc.addEventListener(
  "icecandidate",
  (e) => pc.canTrickleIceCandidates && sendCandidateToPeer(e.candidate),
);

Especificaciones

Specification
WebRTC: Real-Time Communication in Browsers
# dom-rtcpeerconnection-cantrickleicecandidates

Compatibilidad con navegadores

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.

Véase tambień