In letzter Zeit habe ich mich ein wenig mit WebRTC auseinandergesetzt. In diesem Beitrag möchte ich euch einen kurzen Überblick verschaffen, wie das ganze funktioniert, ohne dabei zu sehr in die technischen Details einzutauchen.
Was ist WebRTC eigentlich?
Bei WebRTC handelt es sich um Echtzeitkommunikation (Video-, Sprachübertragung) zwischen zwei (oder mehr) Endgeräten. Das praktische daran: Es ist in modernen Webbrowsern bereits integriert und mit ein paar API-Aufrufen relativ einfach einzusetzen.
Voraussetzungen
Obwohl mit WebRTC eine Verbindung zwischen zwei Clients aufgebaut wird, klappt es aber trotzdem nicht ohne eine dritte Partei. Damit eine Verbindung so gut wie immer klappt, müssen folgende Voraussetzungen erfüllt sein:
- Signaling Server
- STUN Server
- TURN Server
Wie kommt eine Verbindung zu Stande?
User A und User B, – nennen wir sie Christian und Markus – wollen ein Videotelefonat führen. Irgendwie müssen sie aber erst miteinander kommunizieren. Das geschieht über den Signaling Server. Über diesen können Nachrichten zwischen Christian und Markus hin- und hergeschickt werden.
Nachdem die beiden kommuniziert haben und feststeht, dass sie ein Videotelefonat führen möchten, verbinden sich die Clients und bauen eine Peer to Peer, also eine direkte Verbindung zueinander auf.
Oftmals ist es aber nicht ganz so einfach. Im oben genannten Fall kennen die beiden Clients die gegenseitigen Adressen und können die Verbindung direkt miteinander aufbauen. Wenn sich einer der Clients hinter einer Firewall oder einer NAT befindet klappt das nicht. Und hier kommt der STUN-Server ins Spiel.
STUN-Server
Was genau macht dieser STUN-Server? Vereinfacht gesagt schickt jeder der Clients eine Anfrage an den STUN-Server. Dieser ermittelt von jedem der Clients eine Adresse, über welche er erreicht werden kann.
Nun können Christian und Markus eine Verbindung zueinander aufbauen und das angestrebte Videotelefonat führen.
TURN-Server
Und für was wird dann der TURN-Server benötigt? Es gibt noch einen dritten Fall, der abgedeckt werden muss und dieser wird recht häufig vorkommen. Befindet sich einer der Clients hinter einer Firewall/einer NAT, kann es durchaus sein, dass die direkte Verbindung geblockt wird.
In diesem Fall kann zwischen Christian und Markus keine direkte Verbindung aufgebaut werden. Die beiden kommunizieren über einen TURN-Server miteinander. Die Daten werden jeweils auf den TURN-Server geschickt und dann vom jeweils anderen abgeholt.
Zum Schluss
Der Beitrag ist sehr einfach gehalten und grundsätzlich steckt ein wenig mehr dahinter. Wenn man sich mit dem ganzen ein wenig beschäftigt hat, wird aber schnell klar: Mit relativ wenig Aufwand kann man seine eigene Lösung bauen, mit der Sprach- und Videotelefonie (oder wie in meinem Fall Bildschirmübertragung) vergleichsweise einfach umzusetzen ist.
Für weitere Details und ein Beispiel kann ich euch diesen Beitrag ans Herz legen, welcher mir viel weiter geholfen hat. Außerdem kann ich euch folgendes Tool ans Herz legen. Mit diesem könnt ihr testen, ob euer TURN/STUN-Server funktionsfähig ist.
Wenn ihr Fragen habt, mehr zu dem Thema wissen wollt oder allgemein Anmerkungen zum Beitrag habt: Wie immer gerne in die Kommentare damit.