2016-04-10 4 views
2

Ich versuche, einige WebRTC Code und ich habe Probleme zu verstehen, diesen Code von Mozilla zu testen/run/lernen:benötigen Klärung setLocalDescription und RTCSessionDescription

... 
var pc = new RTCPeerConnection(); 
... 
pc.createOffer(function(offer) { 
    pc.setLocalDescription(new RTCSessionDescription(offer), function() { 
    // send the offer 
    }, error); 
}, error); 

Das Problem Ich habe dies für das Verständnis ist, dass pc.createOffer gibt bereits ein Objekt "offer" mit zwei Eigenschaften zurück: type und sdp. Also, warum wird "new RTCSessionDescription (offer)" als Argument an pc.setLocalDescription übergeben und nicht "selbst" als von pc.createOffer zurückgegeben?

Ich lese auf RTCSessionDescription Schnittstelle here. Was habe ich verpasst?

Antwort

2

Beachten Sie, dass die MDN-Seite, auf die Sie verweisen, "Draft. Diese Seite ist nicht abgeschlossen."

Der Code funktioniert wie geschrieben - weil eine RTCSessionDescription effektiv durch Übergeben eines in den Konstruktor eines anderen geklont werden kann - aber Sie haben Recht, dass es redundant ist, also habe ich die Seite aktualisiert, um es zu entfernen. Das von createOffer zurückgegebene Objekt wird immer ausreichen. Danke, dass du es gefangen hast.

Beachten Sie, dass Sie immer noch new RTCSessionDescription in Situationen anrufen müssen, in denen das Angebot/die Antwort über den Draht kommt, für jetzt.

Aber Sie werden froh sein zu wissen, dass das auch bald behoben wird: Die spec recently changed, so müssen Sie nie den new RTCSessionDescription Konstruktor jemals aufrufen. Viel einfacher. Beachten Sie jedoch, dass Browser wie Firefox hasn't updated to allow this simpler syntax yet. Dies ist jedoch nur eine Annehmlichkeit, und es gibt keinen Verhaltensunterschied.

aktualisieren: adapter.js hat eine shim for this, so können Sie jetzt sie loswerden, wenn Sie adapter.js verwenden.

+0

Vielen Dank für die Klarstellung. In Bezug auf Ihre Aussage: "Beachten Sie, dass Sie immer noch neue RTCSessionDescription in Situationen aufrufen müssen, in denen das Angebot/die Antwort vorerst drahtlos ankommt." Ich verstehe, dass dies auch behoben wird. Aber ich frage mich, woher/wusste irgendeine WebRTC-Schnittstelle/Methode, dass das Angebot/Antwort SDP "über den Draht" gekommen ist. – Sam

+0

Eine weitere Frage. Ist RTCSSessionDescription.toJSON() ein "Standard?" Ich weiß, dass es nur der Bequemlichkeit dient, aber es wäre schön zu wissen, wie zuverlässig es ist, die ausdrückliche Umwandlung von SDP in JSON zu vermeiden, bevor es über den Signalisierungskanal gesendet wird. – Sam

+0

Entschuldigung, die zweite Frage ist in der Dokumentation beantwortet. .toJSON wird in Chrome, Firefox und Opera unterstützt. – Sam