Google стремится к продвижению расового равенства для чернокожего населения. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

соединения Peer

RTCPeerConnection является центральным интерфейсом в API WebRTC. Он представляет собой соединение между локальным и удаленным партнером и Provice всех функций и событием, необходимой для установления соединения.

Установление соединения пэра

Приложения , реализующие функциональность WebRTC, как правило , в значительной степени зависят от RTCPeerConnection интерфейса. Со стороны вызывающих абонентов (то есть, равный инициировать соединение), процесс установления соединения, как правило, следующее:

  1. Создайте новый RTCPeerConnection экземпляр с соответствующей конфигурацией ICE.
  2. Создание локального описания SDP , используя RTCPeerConnection.createOffer() .
  3. Установите местное описание SDP , используя RTCPeerConnection.setLocalDescription() .
  4. Передача (с использованием службы сигнализации) локальное описание SDP к удаленному узлу.
  5. Регистрация слушателя для icecandidate событий на RTCPeerConnection .
  6. Для каждого icecandidate событий, перенести его ( с помощью службы сигнализации) к удаленному узлу.
  7. Дождитесь входящего удаленного описания SDP от службы сигнализации и установить его с помощью RTCPeerConnection.setRemoteDescription() .
  8. Подождите , входящих кандидатов дистанционного ICE из службы сигнализации и добавить их с помощью RTCPeerConnection.addIceCandidate()

На стороне вызываемого абонента, этот процесс немного отличается.

  1. Создайте новый RTCPeerConnection экземпляр с соответствующей конфигурацией ICE.
  2. Дождитесь входящего удаленного описания SDP от службы сигнализации и установить его с помощью RTCPeerConnection.setRemoteDescription() .
  3. Создать ответ для описания удаленного SDP по телефону RTCPeerConnection.createAnswer() .
  4. Передача (с использованием службы сигнализации) ответа на удаленный узел.
  5. Регистрация слушателя для icecandidate событий на RTCPeerConnection .
  6. Для каждого icecandidate событий, перенести его ( с помощью службы сигнализации) к удаленному узлу.
  7. Подождите , входящих кандидатов дистанционного ICE из службы сигнализации и добавить их с помощью RTCPeerConnection.addIceCandidate()

Проблема с этим API является то, что большинство из этих операций является асинхронным, которые часто делают фактическую реализацию приложения WebRTC осложненным. Многие функции возвращают Promise , который должен быть решен до того , как следующий шаг в этом процессе может продолжаться.

Рекомендуются , чтобы при выполнении приложения , использующим этот API, использование разработчика сделать из async и await вместо регистрации слушателей ( с использованием Promise.then() ), так как это делает ваш код более легко следовать. Рассмотрим следующий пример:

 function createAndSendOffer(peerConnection, signallingService) {
    peerConnection.createOffer()
                  .then(offer => {
                      signallingService.send({
                          type: 'offer',
                          data: offer
                      });
                  });
}
 

При написании кода выше , с использованием async и await , мы получим следующее:

 async function createAndSendOffer(peerConnection, signallingService) {
    const offer = await peerConnection.createOffer();
    signallingService.send({
        type: 'offer',
        data: offer
    });
}