aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/api/rtcpeerconnection/cantrickleicecandidates/index.html
blob: 227387085a4817f7b4bc6602ed65fcda9f570f0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
title: RTCPeerConnection.canTrickleIceCandidates
slug: Web/API/RTCPeerConnection/canTrickleIceCandidates
translation_of: Web/API/RTCPeerConnection/canTrickleIceCandidates
---
<div>{{APIRef("WebRTC")}}</div>

<div></div>

<div><span class="seoSummary">Свойство только для чтения <code><strong>canTrickleIceCandidates</strong></code> , объекта <strong>{{domxref("RTCPeerConnection")}}</strong>, возвращает значение типа {{jsxref("Boolean")}} , которое указывает на то, может ли удаленный пир принимать кандидаты, согласно спецификации  <a href="https://tools.ietf.org/html/draft-ietf-mmusic-trickle-ice">trickled ICE candidates</a>.</span></div>

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

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

<p>Если оно не поддерживается, или о поддержке неизвестно, то проверив ложное значение этого свойства, необходимо подождать, пока значение свойства {{domxref("RTCPeerConnection.iceGatheringState", "iceGatheringState")}} измениться на  <code>"completed"</code> до создания и передачи первоначального предложения. Таким образом, отправка предложения сдерживается до сборки всех кандидатов.</p>

<h2 id="Синтаксис">Синтаксис</h2>

<pre class="syntaxbox notranslate"> var <em>canTrickle</em> = <em>RTCPeerConnection</em>.canTrickleIceCandidates;</pre>

<h3 id="Значение">Значение</h3>

<p>Тип  {{jsxref("Boolean")}} содержит <code>true</code> , если удаленный пир может принимать просвечивающие ICE кандидаты, и  <code>false</code> , если не может. Если удаленный пир еще не инициализирован, свойство возвращает <code>null</code>.</p>

<div class="note">
<p><strong>Примечание :</strong> Значение свойства инициализируется после того, как локальный пир вызовет метод {{domxref("RTCPeerConnection.setRemoteDescription()")}};  Возвращаемый объект описания используется агентом ICE для определения возможности удаленного пира поддерживать просачивающихся  ICE кандидатов.</p>
</div>

<h2 id="Пример">Пример</h2>

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

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

<h2 id="Спецификации">Спецификации</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{ SpecName('WebRTC 1.0', '#dom-rtcpeerconnection-cantrickleicecandidates', 'RTCPeerConnection.canTrickleIceCandidates') }}</td>
   <td>{{ Spec2('WebRTC 1.0') }}</td>
   <td>Initial specification.</td>
  </tr>
 </tbody>
</table>

<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2>



<p>{{Compat("api.RTCPeerConnection.canTrickleIceCandidates")}}</p>

<h2 id="Смотри_так_же">Смотри так же</h2>

<ul>
 <li><a href="/en-US/docs/Web/Guide/API/WebRTC">WebRTC</a></li>
 <li>{{domxref("RTCPeerConnection.addIceCandidate()")}}</li>
 <li><a href="/en-US/docs/Web/API/WebRTC_API/Session_lifetime">Жизненный цикл сессии WebRTC</a></li>
</ul>