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
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