RTCPeerConnection: свойство canTrickleIceCandidates
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна в браузерах с января 2020 года.
Свойство canTrickleIceCandidates только для чтения интерфейса RTCPeerConnection возвращает булево значение, которое указывает, может ли удалённый участник принимать кандидаты ICE с подкачкой.
Подкачка ICE — это процесс продолжения отправки кандидатов после того, как начальное предложение или ответ уже были отправлены другому участнику.
Это свойство устанавливается только после вызова RTCPeerConnection.setRemoteDescription(). В идеале ваш протокол сигнализации предоставляет способ определения поддержки подкачки, чтобы вам не приходилось полагаться на это свойство. Веб-браузер WebRTC всегда поддерживает подкачку ICE. Если подкачка не поддерживается или вы не можете определить это, вы можете проверить на ложное значение этого свойства, а затем подождать, пока значение iceGatheringState не изменится на "completed" перед созданием и отправкой начального предложения. Таким образом, предложение будет содержать все кандидаты.
Значение
Булево значение, которое равно true если удалённый участник может принять кандидаты ICE с подкачкой и false если он не может. Если удалённый участник не установлен, это значение равно null.
Примечание: Значение этого свойства определяется после того, как локальный участник вызовет RTCPeerConnection.setRemoteDescription(); предоставленное описание используется агентом ICE для определения того, поддерживает ли удалённый участник кандидаты ICE с подкачкой.
Примеры
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),
);
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
canTrickleIceCandidates |
83 | 8315–79 | 47 | 69 | 15.4 | 83 | 47 | 59 | 15.4 | 13.0 | 83 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates