Chrome не генерирует ледяной кандидат, WebRTC - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь установить sh видеовызов между двумя партнерами, используя браузер от Chrome до Chrome, на локальный , не используя STUN / ВКЛЮЧИТЬ серверов.

Представьте себе, что имя первого пэра " Сара ", она представляет видеозвонок в качестве звонящего. Имя второго партнера " Bill ", он - зритель и смотрит только видео Сары.

1 - компьютер Сары генерирует предложение и задает его как локальное описание, используя pc.setLocalDescription(offer).

2 - отправляет сгенерированное предложение с помощью сервера сигнализации в Bill.

3 - компьютер Билла устанавливает входящее предложение формы Sara в качестве удаленного описания, используя pc.setRemoteDescription(offer).

* 1022. * 4- Билл генерирует ответ и устанавливает его в качестве локального описания.

5- Билл отправляет сгенерированный ответ Саре, используя сервер сигнализации.

6- Сара получает ответ и устанавливает это как удаленное описание.

Я определил прослушиватель событий для этих кандидатов в обе стороны:

pc.onicecandidate = (event)=>{
   console.log("Event : ",event);
   pc.addIceCandidate(event.candidate);
};

В Chrome он никогда не вызывает pc.onicecandidate, я имею в виду onicecandidate никогда не выполняется и не регистрирует, но в Firefox он регистрирует объект события, значение которого candidate равно null.

Пожалуйста, кто-нибудь может сказать мне, что когда именно pc.onicecandidate = (event)=>... вызывает?

1 Ответ

0 голосов
/ 24 апреля 2020

Когда setLocalDescription () имеет успех, onicecandidate вызывается.

В onicecandidate у параметра события будет собственный кандидат.

Поэтому вам нужно отправить кандидата Сары в Билла, и наоборот.

Если Сара или Билл получают кандидата от оппонента, этот кандидат должен быть добавлен к p c.

const pc = new RTCPeerConnection();

pc.onicecandidate = evt => {
    // send evt.candidate to opponent
    // you don't need to add own candidate self.
};

...

pc.createOffer().then(sdp => {
    pc.setLocalDescription(sdp); // onicecandidate invokes !
    // send sdp to opponent.
}).catch(err => console.error(err));

...