almessadi.
Zur Übersicht

WebRTC-Datenkanäle über Videoanrufe hinaus_

RTCDataChannel ermöglicht den Transport von Browser zu Browser, doch reale Implementierungen erfordern weiterhin Signalisierung, TURN und eine realistische Sicht darauf, wo Peer-to-Peer an seine Grenzen stößt.

Veröffentlicht20. April 2024
Lesezeit8 min read

WebRTC wird oft als Technologie für Videoanrufe mit einigen zusätzlichen APIs betrachtet.

Das verpasst eine seiner interessantesten Fähigkeiten: RTCDataChannel.

Datenkanäle ermöglichen es Browsern, beliebige Anwendungsdaten über denselben Peer-to-Peer-Stapel auszutauschen, den WebRTC für Medien verwendet. Das eröffnet die Tür zu:

  • kollaborativen Werkzeugen
  • Browser-Multiplayer
  • peer-assistiertem Dateiübertrag
  • latenzfreier lokal-erster Synchronisation

Was Peer-to-Peer Dir tatsächlich bietet

Der Hauptreiz liegt nicht in der Ideologie. Es ist die Architektur.

Wenn zwei Browser Daten direkt austauschen können, reduzierst du, wie viel des Traffics über deine eigene Backend-Infrastruktur laufen muss. Das kann Folgendes senken:

  • Server-Bandbreite
  • Relaiskosten
  • zentrale Engpässe

Aber das passiert nur, wenn ein direkter Pfad möglich ist.

Die Teile, die die Menschen überspringen

Eine echte WebRTC-Implementierung benötigt weiterhin:

  • Signalisierung
  • Austausch von ICE-Kandidaten
  • STUN für die Netzwerkentdeckung
  • TURN für Fallback-Relay, wenn die direkte Verbindung fehlschlägt

Das bedeutet, ein WebRTC-System ist nicht „serverlos“. Es ist „nicht immer medienvermittelt durch deinen Anwendungsserver.“

TURN ist besonders wichtig, weil viele reale Benutzer hinter NAT oder Firewall-Bedingungen sitzen, die eine saubere Peer-to-Peer-Konnektivität verhindern.

Eine minimale Form

Die Browser-seitige Einrichtung sieht normalerweise ungefähr so aus:

const pc = new RTCPeerConnection({
  iceServers: [{ urls: "stun:stun.l.google.com:19302" }],
});

const channel = pc.createDataChannel("sync");

channel.onmessage = (event) => {
  console.log("empfangen", event.data);
};

Der Rest der Arbeit besteht dann aus der Signalisierung: Angebote, Antworten und ICE-Kandidaten.

Dieser Signalisierungspfad ist anwendungsspezifisch. WebRTC stellt ihn dir nicht zur Verfügung.

Wo Datenkanäle gut passen

Sie passen gut, wenn:

  • Latenz wichtig ist
  • Peers transienten Zustand austauschen
  • das Produkt weiterhin funktioniert, wenn einige Sitzungen über TURN vermittelt werden

Sie passen schlecht, wenn:

  • jeder Transfer zentral prüfbar sein muss
  • Offline-Speicherung und Wiederaufnahme wichtiger sind als der Live-Transport
  • das Geschäftsmodell ohnehin keine Relay-Infrastruktur tolerieren kann

Bei großen Dateilieferungen klingt Peer-to-Peer attraktiv, aber Wiederaufnehmbarkeit, Persistenz und plattformübergreifende Erwartungen drängen Teams oft zurück zu Objektspeicherlösungen.

Die ehrliche Antwort lautet also: WebRTC-Datenkanäle sind mächtig, aber kein umfassender Ersatz für serververmittelte Transporte.

Weiterführende Literatur