Интересно, почему 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