TURN-Server

Betreibe deinen eigenen TURN-Server (RFC 8656) in Delphi. Allokiere weitergeleitete Transportadressen für Clients, die keinen Peer-to-Peer-Pfad herstellen können — mit Long-Term-Credentials und Per-Allocation-Quotas.

TsgcTURNServer

Ein selbst gehosteter TURN-Server — verarbeitet Allocate / CreatePermission / ChannelBind / Send / Refresh / Data, verwaltet Allokationen und Bandbreite und validiert Long-Term-Credentials.

Komponentenklasse

TsgcTURNServer

Protokoll

TURN (RFC 8656)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Enterprise

Platzieren, Realm setzen, Credentials ausgeben

Setze Port + Realm, liefere per OnTURNAuthenticate Benutzerpasswörter, Active := True — dein Server allokiert jetzt Relays für jeden RFC-8656-Client.

uses
  sgcP2P;

var
  TURNServer: TsgcTURNServer;
begin
  TURNServer := TsgcTURNServer.Create(nil);
  TURNServer.Port  := 3478;
  TURNServer.Realm := 'turn.example.com';

  TURNServer.OnTURNAuthenticate := procedure(Sender: TObject;
    const aUsername: string; var aPassword: string;
    var Accept: Boolean)
  begin
    aPassword := LookupPassword(aUsername);
    Accept    := aPassword <> '';
  end;

  TURNServer.Active := True;
end;
// uses: sgcP2P
TsgcTURNServer *TURNServer = new TsgcTURNServer(this);
TURNServer->Port  = 3478;
TURNServer->Realm = "turn.example.com";
TURNServer->Active = true;

Was steckt drin

Ein selbst gehostetes Relay — sodass deine WebRTC- und ICE-Deployments nicht mehr auf Drittanbieter-TURN-Provider angewiesen sind.

Allocate / Refresh / Free

Bedient Allocate-Requests mit REQUESTED-TRANSPORT, wählt einen freien Relay-Port und verfolgt die Lebensdauer. Refresh verlängert die Allokation; der Server baut sie beim Ablauf ab.

CreatePermission / ChannelBind

Verfolgt Peer-Permissions und Channel-Bindings pro Allokation. Verwirft Send-/Data-Frames für Peers, die gemäß RFC 8656 §9 nicht freigeschaltet sind.

Send / Data / ChannelData

Sowohl 36-Byte-Send/Data-Envelopes als auch 4-Byte-ChannelData-Frames werden unterstützt. Das Relay leitet Datagramme zwischen der weitergeleiteten Transportadresse und dem gebundenen Peer weiter.

Long-Term-Credentials

OnTURNAuthenticate liefert den Benutzernamen; du gibst das Passwort zurück — der Server validiert MESSAGE-INTEGRITY und rotiert Nonces automatisch.

Quotas

Setze Quota.MaxAllocationsPerUser, Quota.MaxBandwidthKbps, Quota.AllocationLifetime, um Missbrauch zu begrenzen. OnQuotaExceeded meldet Ablehnungen.

TURN über TCP / TLS

Schalte den Transport des zugrundeliegenden Servers um — UDP, TCP und TLS über TCP werden alle unterstützt. WebRTC-Clients wählen, was ihr NAT durchquert.

Spezifikationen & Referenzen

Maßgebliche Quellen für das Protokoll, das diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, hole dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.

Online-Hilfe — TsgcTURNServer Vollständige Referenz zu Eigenschaften, Methoden und Ereignissen dieser Komponente.
Demo-Projekt — Demos\35.P2P\03.TURN Sofort lauffähiges Beispielprojekt. Wird im sgcWebSockets-Paket mitgeliefert — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Code-Beispiele für Delphi & C++ Builder und Primärquellen-Referenzen — nur diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek abdeckt.

Bereit, deinen eigenen TURN-Server zu betreiben?

Lade die kostenlose Testversion herunter und richte ein TURN-Relay in Delphi ein.