webrtc onicecandidate триггер события

Интересно, почему webrtc имеет такое поведение: после создания однорангового соединения я объявляю обработчик события onicecandidate, который будет регистрировать локальное описание соединения. Затем я создаю предложение и устанавливаю sdp, который возвращается в качестве локального описания соединения. обработчик событий запускается, однако локальное описание никогда не регистрируется. Однако всякий раз, когда я создаю канал данных перед созданием предложения, на консоли возвращается локальное описание. Может кто-нибудь объяснить мне, почему это происходит?

пример без канала данных

const lc = new RTCPeerConnection();

lc.onicecandidate = e => console.log(JSON.stringify(lc.localDescription));

lc.createOffer().then(o=>lc.setLocalDescription(o)).then(console.log('offer set'))

консоль возвращается: Promise {}

пример с каналом данных

const lc = new RTCPeerConnection();

lc.onicecandidate = e => console.log(JSON.stringify(lc.localDescription));

lc.createDataChannel("xan")

lc.createOffer().then(o=>lc.setLocalDescription(o)).then(console.log('offer set'))

консоль возвращает: Promise {}, localDescription


person shauna vayne    schedule 18.05.2021    source источник


Ответы (1)


Возможным ответом может быть тот факт, что в первом случае к соединению не привязаны MediaStreamTracks.

person shauna vayne    schedule 18.05.2021