Hauptsächlich WebRTC funktioniert gut, aber für Zeiten zu Zeiten sind einige Anrufe fehlgeschlagen. Zum Beispiel wurde einer von zwanzig Anrufen nicht eingerichtet, weil PeerConnection nicht zu arbeiten beginnt.WebRTC PeerConnection startet nicht
Sehen wir uns den korrekten Arbeitsablauf auf der Callerseite an.
-> create offer
-> (sdp observer) getting SDP
-> (peer observer) start gathering candidates
-> (peer observer) adding candidates to SDP
-> set local description with type - offer
-> (signaling) sending SDP
**** accepting call in other side ****
-> (signaling) receive answer SDP
-> set remote description with type - answer
-> (establishing call)
-> ...................
Und zur Klärung der Dinge, ich möchte über Call-Flow auf der Callee Seite zeigen. Aber ich denke, es ist nur der gleiche Fluss für jede WebRTC-Anwendung und nicht nur für meine Frage.
-> (signaling) receiving SDP offer
***** accepting call ****
-> set remote description type offer
-> create answer
-> (sdp observer) getting SDP
-> (peer observer) start gathering candidates
-> (peer observer) adding candidates to SDP
-> set local description with type - answer
-> (signaling) sending SDP answer
-> ...................
Und jetzt sind wir zuversichtlich mit korrektem Anrufverlauf. Hier ist ein Problem. Von Zeit zu Zeit schlug WebRTC fehl, da PeerConnection.Observer nichts in onIceConnectionChange (PeerConnection.IceConnectionState iceConnectionState) empfing. Also, wenn Anruf fehlgeschlagen und wenn erfolgreich, ich erhielt identische Protokoll vom Gerät, mit nur einem Unterschied. Im Falle eines Anrufs fehlgeschlagen, PeerConnection.Observer Zustand, hat seinen Status von NEW zu CHECKING nicht geändert! Warum passiert das?
Wie ich schon sagte, es passiert nur die Zeit von Zeit. Aber verstehe immer noch nicht, was falsch ist? Da zwischen Aufrufen nur ein Unterschied besteht, ändert PeerConnection den Beobachterstatus. Vielleicht benutze ich nur einzelne RELAY-Kandidaten, um einen Anruf zu tätigen, vielleicht sammle ich so schnell Kandidaten?
Sie verwenden Vanille ICE (nicht Rinnsal ICE)? Tritt der Fehler manchmal bei denselben Endpunkten mit denselben Netzwerkbedingungen (speziell NATs) oder mit unterschiedlichen Endpunkten auf? – mattm
@mattm mit Vanilleeis und gleichen EndPoint in Geräten. – GensaGames