TURN-server

Draai je eigen TURN-server (RFC 8656) in Delphi. Wijs gerelayde transportadressen toe aan clients die geen peer-to-peer pad tot stand kunnen brengen, met long-term credentials en quota per allocation.

TsgcTURNServer

Een self-hosted TURN-server — verwerkt Allocate / CreatePermission / ChannelBind / Send / Refresh / Data, beheert allocations en bandbreedte en valideert long-term credentials.

Componentklasse

TsgcTURNServer

Protocol

TURN (RFC 8656)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise

Plaatsen, realm instellen, credentials uitdelen

Stel Port + Realm in, lever wachtwoorden per gebruiker via OnTURNAuthenticate, Active := True — je server wijst nu relays toe aan elke 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;

Wat zit erin

Een self-hosted relay — zo zijn je WebRTC- en ICE-deployments niet langer afhankelijk van externe TURN-providers.

Allocate / Refresh / Free

Honoreert Allocate-requests met REQUESTED-TRANSPORT, kiest een vrije relay-poort en houdt de levensduur bij. Refresh verlengt de allocation; de server breekt hem af bij verloop.

CreatePermission / ChannelBind

Houdt peer-permissions en channel-bindings per allocation bij. Verwerpt Send/Data-frames voor peers zonder permissie volgens RFC 8656 §9.

Send / Data / ChannelData

Zowel 36 byte Send / Data-envelopes als 4 byte ChannelData-frames worden ondersteund. De relay stuurt datagrammen door tussen het relayed-transport-address en de gebonden peer.

Long-term credentials

OnTURNAuthenticate geeft de username door; jij retourneert het wachtwoord — de server valideert MESSAGE-INTEGRITY en roteert nonces automatisch.

Quota

Stel Quota.MaxAllocationsPerUser, Quota.MaxBandwidthKbps en Quota.AllocationLifetime in om misbruik te beperken. OnQuotaExceeded rapporteert afwijzingen.

TURN over TCP / TLS

Pas het transport van de onderliggende server aan — UDP, TCP en TLS over TCP worden allemaal ondersteund. WebRTC-clients kiezen de variant die door hun NAT komt.

Specificaties & referenties

Autoritatieve bronnen voor het protocol dat dit component implementeert.

Documentatie & demo's

Direct linken naar de componentreferentie, het kant-en-klare demoproject pakken en de proefversie downloaden.

Online help — TsgcTURNServer Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component.
Demoproject — Demos\35.P2P\03.TURN Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding voor elk component in de bibliotheek.

Klaar om je eigen TURN-server te draaien?

Download de gratis proefversie en zet een TURN-relay op in Delphi.