36 Punkte von xguru 2025-10-27 | 8 Kommentare | Auf WhatsApp teilen
  • Eine Bibliothek, mit der sich mit nur wenigen Zeilen Code Multiplayer-Web-Apps umsetzen lassen, die ohne Server direkt miteinander verbunden sind
  • Basiert auf WebRTC im Browser und nutzt öffentliche Netzwerke als Signaling-Kanal, um P2P-Matching und Kommunikation automatisch zu orchestrieren
    • Wähle eines von BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase, um Peer Discovery ohne Server durchzuführen
    • App-Daten nach dem Signaling werden ohne Zwischeninstanz direkt per P2P + E2E-Verschlüsselung übertragen
  • Bietet High-Level-Abstraktionen wie Rooms/Broadcasting, automatische Serialisierung, Chunking/Throttling für große Datenmengen, Fortschritts-Events, Verschlüsselung von Sitzungsdaten und Stream-Metadaten
  • Läuft nicht nur im Browser, sondern auch unter Node/Deno/Bun und unterstützt praxisnahe Funktionen wie TURN-Server-Konfiguration, React Hooks und serverseitige Ausführung
  • Der konfigurationsfreie Einsatz öffentlicher Infrastruktur macht es besonders geeignet für verschiedenste Experimente und schnelles Prototyping

8 Kommentare

 
kimjoin2 2025-10-27

Wird der TURN-Server von den Ahnen bereitgestellt?

 
helio 2025-10-28

'stun:stun.cloudflare.com:3478' ist offenbar fest im Quellcode hinterlegt.

 
kimjoin2 2025-10-28

Nicht STUN, sondern TURN.
STUN teilt dir nach dem reinen STUN-Prinzip im Grunde nur mit, wer du bist, deshalb gibt es einige öffentliche Server.
TURN muss den Traffic weiterleiten, daher (weil teuer) muss man entweder dafür bezahlen oder es selbst aufsetzen.
Beispiel: https://github.com/coturn/coturn
So ein Kandidat also.

Es gibt zwar viele Fälle, in denen Kommunikation allein mit STUN möglich ist, aber einfach zu sagen, dass es "funktioniert", ist irgendwie.....
Es funktio...niert schon..... aber hm.. so fühlt es sich an.

 
skageektp 2025-10-29

Wenn es um p2p-Matching geht, braucht man dann kein TURN, oder?

 
kimjoin2 2025-10-29

Ich denke, das hängt davon ab, was mit „p2p-Matching“ bei WebRTC gemeint ist.

  1. Ein Zustand, in dem gegenseitige Paketkommunikation über UDP möglich ist
  2. Ein Zustand, in dem beide Seiten nur die von STUN mitgeteilten Adressen kennen

Bei Fall 1 ist, wie Sie sagen, kein TURN nötig.
Auch bei Fall 2 ist kein TURN nötig, wenn die Umstände günstig sind und die gegenseitige UDP-Kommunikation erfolgreich ist.

In Fall 2 wird TURN benötigt, wenn die gegenseitige Paketkommunikation über UDP fehlschlägt.

Gründe für ein Fehlschlagen sind zum Beispiel:

  • der Peer befindet sich hinter einem symmetrischen NAT, sodass die von STUN ermittelte Adresse (bzw. deren Port) nicht verwendet werden kann, oder
  • irgendwo im Netzwerk ist nur Web-Traffic erlaubt (80, 443), oder
  • irgendwo im Netzwerk ist UDP blockiert, oder
  • eine Seite verwendet nur IPv4 und die andere nur IPv6, oder
  • usw.?

In solchen Fällen muss TURN verwendet werden.

(Dass IPv4-only <-> IPv6-only nicht funktioniert, habe ich gerade zum ersten Mal beim Überprüfen meiner Erinnerung erfahren.)

 
skageektp 2025-10-30

Ja, also Nummer 2. Es heißt zwar „ohne Server miteinander verbunden“ und „Bibliothek“, aber erwarten Sie da nicht vielleicht etwas zu viel ...

 
kimjoin2 2025-10-30

Auf welchen Teil möchten Sie hinaus?

  1. Da eine Verbindung allein mit der von STUN mitgeteilten Adresse (+ Port) möglich ist, wird kein TURN-Server benötigt. Daher ist die Formulierung „ohne Server miteinander verbunden“ wortwörtlich korrekt.
    -> Falls es darum geht, ist mein Wissen wohl veraltet. Ich wäre Ihnen dankbar, wenn Sie mir mitteilen könnten, was sich seit den Inhalten, die ich kannte (und geteilt hatte), geändert hat~!
  2. Ein TURN-Server ist zwar nötig, aber es ist eine Bibliothek, also kann man darüber hinwegsehen.
    -> Was skageektp gesagt hat, stimmt. Da es eine Bibliothek ist, kann man in dem Maß vielleicht darüber hinwegsehen. Ich war da zu empfindlich.

Ich meinte
3. Um es richtig zu nutzen, reicht STUN allein nicht aus, und TURN ist nötig, aber die Übertreibung ist schon heftig~
auszudrücken.

 
kimjoin2 2025-10-29

Ich korrigiere die Erläuterungen zu Punkt 1 und 2 wie folgt.

  1. Zustand, in dem eine gegenseitige Paketkommunikation über UDP möglich ist -> Zustand, in dem die jeweiligen Peers gegenseitig Paketkommunikation über UDP durchführen können
  2. Zustand, in dem beide Seiten nur die von STUN mitgeteilte Adresse kennen -> Zustand, in dem die jeweiligen Peers nur die von STUN mitgeteilte Adresse des Gegenübers kennen

So möchte ich das berichtigen. Im Originalbeitrag besteht sonst die Möglichkeit eines Missverständnisses.