WebRTC + Adapter.js, приводящий к ошибке addremoteCandidate при подключении аудиовызова в MS Edge

Я пытаюсь подключить аудиовызов через API sipML5 в MS edge, используя webrtc и adapter.js, но выдает ошибку Timeout для addremoteCandidate. Рассмотрите возможность отправки уведомления об окончании кандидатов.

Я уже пытался отправить addIceCandidate (null), как упомянуто здесь, но он не работает или, возможно, я отправляю его неправильно. Я погуглил, но документации по этому вопросу недостаточно.

У меня вопрос, где и как я могу отправить addIceCandidate (null), чтобы адаптер.js рассмотрел его?

Мой код RTCPeerConnection

this.o_pc = new window.RTCPeerConn(a && !a.length ? null : {
            iceServers: a, 
            rtcpMuxPolicy: "negotiate",
            iceTransportPolicy: "all",
            bundlePolicy: "balanced",
            iceCandidatePoolSize: 0
            //gatherPolicy: "all",

        }, this.o_media_constraints);
        this.o_pc.onicecandidate = tmedia_session_jsep01.mozThis ? tmedia_session_jsep01.onIceCandidate : function(e) {
            tmedia_session_jsep01.onIceCandidate(e, c);
        };
        this.o_pc.onnegotiationneeded = tmedia_session_jsep01.mozThis ? tmedia_session_jsep01.onNegotiationNeeded : function(e) {
            tmedia_session_jsep01.onNegotiationNeeded(e, c);
        };
        this.o_pc.onsignalingstatechange = tmedia_session_jsep01.mozThis ? tmedia_session_jsep01.onSignalingstateChange : function(e) {
            tmedia_session_jsep01.onSignalingstateChange(e, c);
        };
this.o_media_constraints = {
        audio: true
    };
    if (tsk_utils_get_navigator_friendly_name() == "firefox") {
        tmedia_session_jsep01.mozThis = this;
        this.o_media_constraints.mandatory.MozDontOfferDataChannel = true;
    }

Любая помощь будет оценена.

Спасибо

1 ответ

Это предупреждение означает, что вы никогда не вызываете addIceCandidate(null). Когда другой конец завершается сбором кандидатов, то есть pc.onicecandidate(событие) называется event.candidate not set. Затем вам нужно отправить сигнальное сообщение, например, например, {type: 'end-of-кандидатов'}, что вызовет addIceCandidate(null) в Edge.

Если вы этого не сделаете, то adapter.js (или, скорее, прокладка Edge/ORTC) сделает это за вас через некоторое время, но это далеко не оптимально.

Другие вопросы по тегам