2014-09-22 23 views
7

Ich verwende WebRTC und stelle fest, dass es nicht in allen Browsern unterstützt wird. Chrome und Firefox unterstützen es jedoch (in neueren Versionen; ich habe die neuesten Versionen installiert), solange Sie das richtige Präfix für bestimmte Variablen haben. Zum Beispiel habe ich Unterstützung folgende für Peerconnection für Cross-Browser:Fehlerhafte RTCConfiguration nur in Chrome

var PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; 

Jetzt, wo es Cross-Browser unterstützt werden soll, hat ich den folgenden Code:

var servers = { 
iceservers: [ 
    {url: "stun:23.21.150.121"}, 
    {url: "stun:stun.1.google.com:19302"} 
    ] 
}; 
var pc = PeerConnection(servers); 

Aber in Chrome wird es ein Fehler in der letzten Zeile (var pc = PeerConnection(servers);). Der Fehler lautet:

Failed to construct 'RTCPeerConnection': Malformed RTCConfiguration"} 

Natürlich mag Chrome nicht meine Konfigurationsparameter in der PeerConnection-Deklaration. Aber meine Frage ist: Warum bekomme ich diesen Fehler und wie kommt es nur in Chrome? (FireFox funktioniert gut)

Antwort

6

Nun, die Lösung ist eigentlich leise einfach. Das servers Objekt muss mit iceServers in Camel Case erstellt werden. Außerdem haben Sie beim Erstellen der Verbindung Ihr Schlüsselwort new vergessen, aber das ist wahrscheinlich ein Tippfehler in der Frage.

So:

var servers = { 
iceServers: [ 
    {url: "stun:23.21.150.121"}, 
    {url: "stun:stun.1.google.com:19302"} 
    ] 
}; 
var pc = new PeerConnection(servers); 

Sowohl alle Kleinbuchstaben und Kamel Fall gut funktionieren in FireFox. Es sollte also nicht geändert werden, wie es dort funktioniert, aber es muss Camel sein, damit es in Chrome funktioniert.

+1

Ich wusste, es wäre etwas Einfaches. Dann war das neue Keyword nur ein Tippfehler in meiner Frage, wie Sie angenommen haben. Danke vielmals! – chRyNaN

2

Siehe Bens Antwort. JavaScript unterscheidet zwischen Groß- und Kleinschreibung und "iceServers" ist die korrekte Schreibweise aus der mediacapture spec.

Ich wollte klarstellen, dass alle kleinen "Eisserver" in Firefox auch nicht funktionieren, da Ihre STUN-Server ignoriert werden. Firefox verwendet seinen Standard-STUN-Server, wenn dieser nicht vorhanden ist. Aus diesem Grund scheint es zu funktionieren, aber nicht mit den STUN-Servern, die Sie denken.

+0

Laut dem Mozilla Developer Network unterstützen sie Kleinbuchstaben für Stun-Server. Check out https://developer.mozilla.org/en-US/docs/Web/Guide/API/WebRTC/WebRTC_basics – chRyNaN

+0

@AndroidStudent Ich sehe nicht, wo es das sagt. Die einzige Erwähnung von 'Eisservern' gibt es als 'IceServer' (Großbuchstaben 'S') [hier] (https://developer.mozilla.org/en-US/docs/Web/Guide/API/WebRTC/WebRTC_basics # Server). Auf jeden Fall bin ich sicher, dass es keine "Eis" -Server akzeptiert, weil die [Quelle] (http://hg.mozilla.org/mozilla-central/annotate/68f76e3c5787/dom/webidl/RTCConfiguration.webidl # l17) sagt so. – jib

+0

falsch gelesen Ihre Antwort. Stimme völlig zu. Danke für die Eingabe – chRyNaN

Verwandte Themen