Serwer TURN

Uruchom własny serwer TURN (RFC 8656) w Delphi. Alokuj przekazywane adresy transportowe dla klientów, którzy nie mogą nawiązać ścieżki peer-to-peer, z poświadczeniami long-term i limitami przypadającymi na alokację.

TsgcTURNServer

Samohostowany serwer TURN — przetwarza Allocate / CreatePermission / ChannelBind / Send / Refresh / Data, zarządza alokacjami i pasmem, waliduje poświadczenia long-term.

Klasa komponentu

TsgcTURNServer

Protokół

TURN (RFC 8656)

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Enterprise

Upuść, ustaw realm, wydaj poświadczenia

Ustaw Port + Realm, dostarcz hasła dla użytkowników przez OnTURNAuthenticate, Active := True — serwer alokuje teraz relaye dla każdego klienta zgodnego z RFC 8656.

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;

Co jest w środku

Samohostowany relay — pozwala Twoim wdrożeniom WebRTC i ICE uniezależnić się od zewnętrznych dostawców TURN.

Allocate / Refresh / Free

Obsługuje żądania Allocate z REQUESTED-TRANSPORT, wybiera wolny port relayu i śledzi czas życia. Refresh przedłuża alokację; serwer demontuje ją po wygaśnięciu.

CreatePermission / ChannelBind

Śledzi uprawnienia peerów dla poszczególnych alokacji i bindowanie kanałów. Odrzuca ramki Send/Data dla peerów, którzy nie otrzymali uprawnień zgodnie z RFC 8656 §9.

Send / Data / ChannelData

Obsługiwane są zarówno 36-bajtowe koperty Send / Data, jak i 4-bajtowe ramki ChannelData. Relay przekazuje datagramy między relayed-transport-address a powiązanym peerem.

Poświadczenia long-term

OnTURNAuthenticate udostępnia nazwę użytkownika; Ty zwracasz hasło — serwer waliduje MESSAGE-INTEGRITY i automatycznie rotuje nonces.

Limity (quotas)

Ustaw Quota.MaxAllocationsPerUser, Quota.MaxBandwidthKbps, Quota.AllocationLifetime, aby ograniczyć nadużycia. OnQuotaExceeded raportuje odrzucenia.

TURN przez TCP / TLS

Przełącz transport bazowego serwera — obsługiwane są UDP, TCP oraz TLS przez TCP. Klienci WebRTC wybierają ten, który przechodzi przez ich NAT.

Specyfikacje i odniesienia

Wiarygodne źródła protokołu, który implementuje ten komponent.

Dokumentacja i dema

Przejdź bezpośrednio do dokumentacji komponentu, pobierz gotowy do uruchomienia projekt demonstracyjny i pobierz wersję próbną.

Pomoc online — TsgcTURNServer Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — Demos\35.P2P\03.TURN Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.

Gotowy, by uruchomić własny serwer TURN?

Pobierz bezpłatną wersję próbną i postaw relay TURN w Delphi.