Was ist WebRTC?
Web Real-Time Communications (WebRTC) ist eine Open-Source-Technologie, die es Browsern ermöglicht, Daten direkt mit nur minimalem Einsatz eines Vermittlungsservers oder von Drittanbieter-Software auszutauschen. Oft wird WebRTC speziell für den Austausch von Audio- und Videodaten verwendet.
WebRTC verwendet eine Reihe von APIs und Protokollen, um Peer-to-Peer (P2P)-Verbindungen direkt zwischen Geräten einzurichten. Es kann unter anderem Telefonverbindungen, Telefonkonferenzen, Audio- und Videostreaming, Dateiübertragungen und Bildschirmfreigabe unterstützen.
Die meisten Technologien für den Austausch und das Streaming von Daten zwischen Geräten nutzen Server als Zwischenstation: Sie nehmen Daten von Clients entgegen, speichern oder cachen sie und leiten sie an den anderen Client weiter. Wenn Alice in einer Chat-App mit Bob sprechen möchte, gehen ihre Worte zunächst an einen Webserver, bevor sie Bobs Gerät erreichen. WebRTC ermöglicht es Alice und Bob größtenteils, direkt miteinander zu kommunizieren.
Infolgedessen benötigen WebRTC-basierte Apps aus Sicht des App-Entwicklers etwas weniger Backend-Infrastruktur und können eine geringere Latenz aufweisen als Apps, die Client-Server-Protokolle verwenden. Ein weiterer Vorteil von WebRTC besteht darin, dass die Nutzer nichts installieren müssen: Außer einem Webbrowser sind keine Plugins oder zusätzliche Software erforderlich.
Wie funktioniert WebRTC?
WebRTC streamt direkt zwischen Browsern. Fast alle Browser unterstützen WebRTC nativ, sodass die Nutzer kein Plugin oder zusätzliche Software installieren müssen. Dies macht WebRTC zu einer logischen Wahl, um Echtzeit-Kommunikationsfunktionen in eine Webanwendung zu integrieren.
Während WebRTC in erster Linie Peer-to-Peer ist, befinden sich Endbenutzergeräte in der Realität oft hinter Firewalls, sie benötigen Network Address Translation (NAT) für Verbindungen oder sie stellen eine Verbindung zum Internet über Router her, die Peer-to-Peer nicht unterstützen. Daher erfordern WebRTC-Verbindungen Zwischenserver, damit sich Geräte gegenseitig finden oder Daten von einem zum anderen weiterleiten können. WebRTC greift zu diesem Zweck auf eine Reihe von speziellen Protokollen und Servern zurück.
WebRTC-Protokolle: ICE, STUN, TURN
Session Traversal Utilities for NAT (STUN) ist ein Protokoll, um die öffentliche IP-Adresse des anderen Peers in der Verbindung herauszufinden. Die Peers fragen den STUN-Server nach der öffentlichen IP-Adresse des anderen Peers und ob der Peer hinter dem NAT ihres Routers erreichbar ist. Wenn für beide Parteien eine öffentliche IP-Adresse verfügbar ist, kann die WebRTC-Verbindung direkt zwischen den Peers hergestellt werden.
Traversal Using Relays around NAT (TURN) wird in einigen Fällen verwendet, wenn der andere Peer in einer Verbindung aufgrund der Verwendung von Firewalls oder privaten IP-Adressen keine öffentliche IP-Adresse hat. Peers verbinden sich mit einem TURN-Server und nicht direkt untereinander, und der Server leitet ihre Pakete weiter.
Interactive Connectivity Establishment (ICE) ist das Framework, das es Browsern ermöglicht, sich mit STUN- und TURN-Servern zu verbinden.
Weitere Informationen zu WebRTC-Protokollen finden Sie hier.
WebRTC-Signalisierungsserver
Für den P2P-Medienaustausch zwischen zwei Geräten, etwa in einem Videoanruf, müssen diese aushandeln, wie sie Informationen aneinander senden. Dafür wird ein Signalisierungsserver benötigt. Der Signalisierungsserver ermöglicht den wechselseitigen Austausch zwischen den Geräten, während sie Kommunikationsprotokolle, Medienauflösung, Videocodecs und andere Anforderungen für den Austausch von Medienströmen festlegen sowie Routing-Informationen austauschen.
WebRTC-Medienserver
Obwohl WebRTC für P2P-Kommunikation ausgelegt ist, kann es auch mit einem zwischengeschalteten Medienserver arbeiten. Ein Medienserver kann Mediendaten empfangen und weiterleiten und dabei Bandbreitenbeschränkungen von Geräten sowie andere Einschränkungen berücksichtigen. Das ist besonders dann notwendig, wenn mehr als zwei Geräte gleichzeitig Medien austauschen – etwa wenn ein Dutzend Personen an einem Videoanruf teilnehmen möchte statt nur zwei.
Was ist Peer-to-Peer (P2P) und wie unterscheidet es WebRTC von anderen Streaming-Protokollen?
Das Internet basierte auf dem Client-Server-Modell.
- Clients: Endbenutzergeräte wie Desktop-Computer, Laptops und Smartphones sowie IoT- und Smart Devices
- Server: Große, für Effizienz optimierte Computer, die in Rechenzentren gehostet werden
In der Regel laden Clients Websites, Apps und Daten von Servern, anstatt direkt miteinander zu kommunizieren. Server sind zuverlässiger und leistungsfähiger als Client-Geräte und speziell dafür konfiguriert, Anfragen von Clients zu bedienen. Sie speichern Daten und führen Code im Backend aus, sodass Clients nicht alle benötigten Daten selbst speichern oder rechenintensive Funktionen lokal ausführen müssen. Dadurch können Nutzer von Client-Geräten einfach im Web surfen und die benötigten Ressourcen – etwa Code, Videos oder Bilder – von Servern abrufen, ohne sämtliche angezeigten Webinhalte dauerhaft herunterladen zu müssen.
Im Gegensatz dazu ist Peer-to-Peer eine Netzwerkarchitektur, bei der jedes angeschlossene Gerät direkt mit jedem anderen angeschlossenen Gerät kommuniziert. Peer-to-Peer reduziert oder eliminiert die Notwendigkeit von Servern, sodass Client-Geräte sich miteinander verbinden und Daten austauschen können. Da alle angeschlossenen Geräte in einer P2P-Architektur die gleiche Funktion des Sendens oder Empfangens von Daten erfüllen können, werden sie nicht als Clients, sondern als „Peers“ bezeichnet.
Streaming-Protokolle wie HLS, HDS und MPEG-DASH gehen von einem Client-Server-Modell aus, bei dem ein Server audiovisuelle Inhalte speichert oder zwischenspeichert und sie dann an Clients streamt. WebRTC verwendet jedoch hauptsächlich ein Peer-to-Peer-Modell, bei dem die Clients direkt zueinander streamen.
Aus diesem Grund ist WebRTC oft besser für Live-Streaming geeignet. Bei HLS und MPEG-DASH beträgt die Latenz zwischen der Quelle des Streams und den Stream-Zuschauern normalerweise mindestens zehn Sekunden, während bei WebRTC die Latenz deutlich geringer ist. Livestreaming mit geringer Latenz einrichten
(Im realen Einsatz nutzt WebRTC tatsächlich Server, damit es wie oben beschrieben korrekt funktioniert.)
WebRTC vs. WebSocket: Warum WebRTC verwenden?
WebSocket ist ein weiteres häufig genutztes Protokoll für den Echtzeit-Datenaustausch. Es gibt einige zentrale Unterschiede zwischen WebRTC und WebSocket, weshalb viele App-Entwickler für latenzarmes Live-Streaming WebRTC bevorzugen:
- WebSocket ist Client-Server, während WebRTC Peer-to-Peer ist: Wie oben erläutert, verschafft dies WebRTC in vielen Fällen einen Geschwindigkeitsvorteil.
- WebSocket läuft über TCP, während WebRTC normalerweise über UDP läuft: TCP und UDP sind zwei verschiedene Transportprotokolle, die Protokollen auf Anwendungsschicht wie WebRTC, WebSocket oder HTTP zugrunde liegen können. Kurz zusammengefasst: TCP ist zuverlässiger, aber etwas langsamer, da alle Pakete zugestellt werden müssen. UDP ist weniger zuverlässig, aber schneller, da sich UDP nicht um Paketverluste kümmert. Für Anwendungsfälle der Echtzeit-Kommunikation wie Video-Chat ist Geschwindigkeit oft wichtiger als ein paar fehlende Informationen. Deshalb ist UDP (und damit WebRTC) die bessere Wahl.
Erste Schritte mit WebRTC
Cloudflare Stream ermöglicht es Entwicklern, WebRTC-Streams einfach in ihre Apps zu integrieren, und Cloudflare Realtime enthält vorgefertigte Komponenten, mit denen Entwickler Video-, Audio- und Chat-Funktionen in ihre Apps integrieren können. Beide Produkte stellen Streams aus dem globalen Netzwerk von Cloudflare bereit, das mit über 335+ Standorten in der ganzen Welt innerhalb von Millisekunden für fast jeden Internetnutzer auf der Welt erreichbar ist.
Sehen Sie sich diese Anweisungen an, um einen WebRTC-Stream mit Cloudflare Stream einzurichten.
Sehen Sie sich diese Referenzarchitektur an, um mit dem Aufbau mit Cloudflare Realtime zu beginnen.
So richten Sie einen TURN-Server ein
Cloudflare Realtime enthält auch einen verwalteten TURN-Server, um sicherzustellen, dass WebRTC-Streams Endnutzer erreichen können, auch wenn sie sich hinter einer Firewall befinden oder keine öffentliche IP-Adresse haben. Dieser Dienst hilft Entwicklern und Streamern sicherzustellen, dass ihre Inhalte so viele Zuschauer wie möglich erreichen können, ohne dass sie ihre eigenen TURN-Server konfigurieren und warten müssen. Lesen Sie mehr über den Cloudflare TURN-Dienst.
FAQs
Wodurch unterscheidet sich WebRTC von herkömmlichen Streaming-Methoden?
Die meisten Streaming-Technologien basieren auf einem Client-Server-Modell, bei dem Daten zunächst einen zwischengeschalteten Server durchlaufen müssen, um gespeichert oder verarbeitet zu werden, bevor sie den Empfänger erreichen. WebRTC nutzt in erster Linie eine Peer-to-Peer-Architektur (P2P), die es Geräten ermöglicht, Audio, Video und Daten direkt miteinander auszutauschen. Diese direkte Verbindung reduziert in der Regel den Bedarf an umfangreicher Backend-Infrastruktur und senkt die Latenz deutlich.
Warum wird WebRTC für Live-Inhalte gegenüber HLS oder MPEG-DASH vorgezogen?
Der Hauptvorteil ist Geschwindigkeit. Bei Standardprotokollen wie HLS besteht oft eine Verzögerung von mehreren Sekunden zwischen der Quelle und dem Betrachter. Da WebRTC für Echtzeit-Interaktionen konzipiert ist, kommt es näher an eine echte Live-Übertragung heran. Dadurch eignet es sich besser für Anwendungsfälle wie Videokonferenzen oder interaktive Live-Streams.
Müssen Benutzer eine spezielle Software installieren, um einem WebRTC-Stream beizutreten?
Einer der wichtigsten Vorteile von WebRTC ist, dass es von nahezu allen modernen Webbrowsern nativ unterstützt wird. Nutzer können an hochwertiger Kommunikation teilnehmen, ohne zusätzliche Plugins oder Anwendungen von Drittanbietern herunterladen zu müssen.
Welche Rolle spielt ein Signalisierungsserver bei einer WebRTC-Verbindung?
Bevor zwei Geräte Medien austauschen können, müssen sie sich darauf einigen, wie sie miteinander kommunizieren. Ein Signalisierungsserver unterstützt diese Abstimmung, indem er den Geräten hilft, Informationen über ihre jeweiligen Routing-Anforderungen, Videocodecs und Medienauflösungen auszutauschen.
Wie kann Cloudflare Entwicklern bei der Implementierung dieser Echtzeit-Funktionen helfen?
Cloudflare bietet mit Produkten wie Stream und Realtime Tools, mit denen Entwickler WebRTC-basiertes Video, Audio und Chat in ihre Anwendungen integrieren können, ohne eigene Infrastruktur verwalten zu müssen. Diese Services nutzen ein globales Netzwerk, damit Streams weltweit nur Millisekunden von den Nutzern entfernt bleiben, und enthalten gemanagte TURN-Services, um auch Geräte hinter Firewalls zuverlässig zu erreichen.