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

BCD tables only load in the browser

Véase tambień