WebRTC - Wie viele STUN / TURN Server muss ich angeben?
Ich habe Probleme mit NAT traversal
und WebRTC
. Videostreaming arbeitet mit einigen Leuten, aber nicht mit jemand, der hinter einem Studentenwohnheim router.
Ich denke, das sollte gelöst werden, indem über einen TURN-server. Ich habe es so gemacht es immer noch nicht funktioniert, und jetzt Frage ich mich, ob der TURN-server überhaupt funktioniert. In der Konsequenz Frage ich mich, ob ich kann oder sollten mehrere TURN-Servern, und wenn ja, wie.
Fand ich diese Liste der STUN/TURN-Server in einem anderen thread. Nun bin ich setzen, wie dies
var STUN = {
'url': 'stun:stun.l.google.com:19302',
};
var TURN = {
url: 'turn:[email protected]:80',
credential: 'homeo'
};
var iceServers =
{
iceServers: [STUN, TURN]
};
var pc = new RTCPeerConnection(iceServers);
Also meine Frage ist im Grunde: Ist es möglich, mehrere STUN/TURN-Server? Sollte ich es tun, wenn möglich, und wie würde der code Aussehen?
InformationsquelleAutor der Frage spacecoyote | 2014-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
URLs für BETÄUBUNGS-und/oder DREHEN-Server (Optional) angegeben, die von einem WebRTC-app in der iceServers configuration-Objekt, das ist das erste argument für die RTCPeerConnection-Konstruktor.
Beispiel der Verwendung von mehr-server:
Einmal RTCPeerConnection hat, dass die Informationen, die EIS Magie passiert automatisch: RTCPeerConnection verwendet die ICE-framework zu arbeiten, den besten Weg zwischen Gleichaltrigen, die sich mit STUN-und TURN-Servern wie nötig.
STUN:
STUN-Server live auf dem öffentlichen internet und haben eine einfache Aufgabe: überprüfen der IP:port-Adresse einer eingehenden Anfrage (aus einer Anwendung, die Sie hinter einem NAT-Router) und senden diese Adresse zurück als Antwort. In anderen Worten, verwendet die Anwendung einen STUN-server zu entdecken, Ihre IP:port aus einer öffentlichen Perspektive. Dieser Prozess ermöglicht es, eine WebRTC peer-to-Holen Sie sich eine öffentlich zugängliche Adresse für sich selbst, und dann passieren, dass es zu einem anderen peer über ein signaling-Mechanismus, um eine direkte Verbindung. (In der Praxis verschiedene NATs arbeiten auf unterschiedliche Weise, und es kann mehrere NAT-Ebenen, aber das Prinzip ist immer noch das gleiche.)
DREHEN:
DREHEN Sie RTCPeerConnection versucht, direkte Kommunikation zwischen peers über UDP. Wenn das fehlschlägt, RTCPeerConnection resorts auf TCP. Wenn nicht, SCHALTEN Sie Sie können Server als fallback verwendet werden, die Weiterleitung von Daten zwischen Endpunkten.
Nur zu wiederholen: SCHALTEN wird verwendet, um relais audio - /video - /Daten-streaming zwischen Gleichaltrigen, nicht-Signalisierung Daten!
TURN-Server haben öffentliche Adressen, damit Sie kontaktiert werden können, von den Kollegen, auch wenn die peers hinter firewalls oder proxies. TURN-Server eine konzeptionell einfache Aufgabe — relais ein Strom, aber, im Gegensatz zu STUN-Servern, die Sie inhärent verbrauchen viel Bandbreite. In anderen Worten, TURN-Server müssen beefier.
sehen diesem
InformationsquelleAutor der Antwort Muath
In Bezug auf STUNWebRTC senden Verbindliche Anforderungen an alle, und die Ergebnisse zusammengeführt werden. (Beachten Sie, dass in älteren Versionen des WebRTC-code, nur der erste STUN-server scheint zu sein, verwendet)
Ich würde empfehlen, mit mehr als einer STUN-server, so reduzieren Sie Ihre Verbindung Zeit, im Durchschnitt. Die genaue Zahl hängt von der Zuverlässigkeit Ihrer STUN-Server. In der Regel 2 sind genug.
In Bezug auf DREHENdas problem ist komplexer, da diese Server leiten Ihren traffic bei P2P-verbindungen sind nicht möglich. Wenn Sie viele Mandanten, ein single-TURN-server wird wahrscheinlich erreicht seine maximale Bandbreite. In diesem Fall, die Einstellung mehrere TURN-Servern helfen werden.
Wie? Während der Konnektivität überprüfen phase, WebRTC wählen wird, der WIEDERUM ein relais mit der niedrigsten round-trip-Zeit. Daher ist das einstellen von mehreren TURN-Server ermöglicht Ihrer Anwendung, um scale-up in Bezug auf die Bandbreite und die Anzahl der Nutzer.
Wenn Sie nicht entwickeln eine Anwendung in großem Ausmaß, 1 oder 2 DREHEN-Server sind in der Regel genug.
Können Sie den WebRTC-code auf https://chromium.googlesource.com/external/webrtc/+/master
Ich empfehlen, sich im inneren: webrtc/p2p/client/basicportallocator.cc, webrtc/p2p/base/stunport.cc und webrtc/p2p/base/turnport.cc
InformationsquelleAutor der Antwort Emil