RTCPeerConnection.canTrickleIceCandidates

Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского

Свойство только для чтения 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 кандидатов.

Пример

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 Status Comment
WebRTC 1.0: Real-time Communication Between Browsers
Определение 'RTCPeerConnection.canTrickleIceCandidates' в этой спецификации.
Кандидат в рекомендации Initial specification.

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

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
canTrickleIceCandidatesChrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Полная поддержка 47IE Нет поддержки НетOpera Нет поддержки НетSafari ? WebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Полная поддержка 44Opera Android Нет поддержки НетSafari iOS ? Samsung Internet Android Полная поддержка 6.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна

Смотри так же