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.

Свойство только для чтения canTrickleIceCandidates , объекта RTCPeerConnection, возвращает значение типа Boolean , которое указывает на то, может ли удалённый пир принимать кандидаты, согласно спецификации trickled ICE candidates.

ICE trickling (ICE просачивание) - процесс продолжающейся отправки кандидатов, после первоначальной передачи предложения или ответа удалённому пиру..

Свойство инициализируется только после вызова метода RTCPeerConnection.setRemoteDescription(). Было бы идеально, если бы ваш протокол сигнализации предоставлял способ определения поддержки просачивания кандидатов, для того, что бы не полагаться на это свойство. Браузер, поддерживающий WebRTC, всегда будет поддерживать ICE просачивание.

Если оно не поддерживается, или о поддержке неизвестно, то проверив ложное значение этого свойства, необходимо подождать, пока значение свойства iceGatheringState измениться на "completed" до создания и передачи первоначального предложения. Таким образом, отправка предложения сдерживается до сборки всех кандидатов.

Синтаксис

 var canTrickle = RTCPeerConnection.canTrickleIceCandidates;

Значение

Тип Boolean содержит true , если удалённый пир может принимать просвечивающие ICE кандидаты, и false , если не может. Если удалённый пир ещё не инициализирован, свойство возвращает null.

Примечание: Значение свойства инициализируется после того, как локальный пир вызовет метод RTCPeerConnection.setRemoteDescription(); Возвращаемый объект описания используется агентом ICE для определения возможности удалённого пира поддерживать просачивающихся ICE кандидатов.

Пример

js
var pc = new RTCPeerConnection();
// Следующий код может быть использован для обработки предложения от пира, когда
// он не знает поддерживает ли он просачивание
pc.setRemoteDescription(remoteOffer)
  .then(_ => pc.createAnswer())
  .then(answer => pc.setLocalDescription(answer))
  .then(_ =>
    if (pc.canTrickleIceCandidates) {
      return pc.localDescription;
    }
    return new Promise(r => {
      pc.addEventListener('icegatheringstatechange', e => {
        if (e.target.iceGatheringState === 'complete') {
          r(pc.localDescription);
        }
      });
    });
  })
  .then(answer => sendAnswerToPeer(answer)) // сигнальное сообщение
  .catch(e => handleError(e));

pc.addEventListener('icecandidate', e => {
  if (pc.canTrickleIceCandidates) {
    sendCandidateToPeer(e.candidate); // сигнальное сообщение
  }
});

Спецификации

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

Совместимость с браузерами

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.

Смотрите также