Server TURN per Delphi
Esegui il tuo server TURN (RFC 8656) in Delphi. Alloca indirizzi di trasporto relayed per client che non riescono a stabilire un percorso peer-to-peer, con credenziali long-term e quote per allocazione.
Esegui il tuo server TURN (RFC 8656) in Delphi. Alloca indirizzi di trasporto relayed per client che non riescono a stabilire un percorso peer-to-peer, con credenziali long-term e quote per allocazione.
Un server TURN self-hosted — elabora Allocate / CreatePermission / ChannelBind / Send / Refresh / Data, gestisce le allocazioni e la loro durata, valida le credenziali long-term.
TsgcTURNServer
Windows, macOS, Linux, iOS, Android
Enterprise
Imposta Port e il realm su TURNOptions.Authentication.LongTermCredentials, fornisci le password per utente tramite OnSTUNRequestAuthorization, Active := True — il tuo server ora alloca relay per qualunque client RFC 8656.
uses
sgcP2P, sgcP2P_STUN_Classes;
// TFormTURNServer contiene FServer: TsgcTURNServer e l'handler
procedure TFormTURNServer.StartServer;
begin
FServer := TsgcTURNServer.Create(nil);
FServer.Port := 3478;
FServer.TURNOptions.Authentication.Enabled := True;
FServer.TURNOptions.Authentication.LongTermCredentials.Enabled := True;
FServer.TURNOptions.Authentication.LongTermCredentials.Realm :=
'turn.example.com';
// limita gli abusi: allocazioni per utente e durata massima
FServer.TURNOptions.Allocation.MaxUserAllocations := 4;
FServer.TURNOptions.Allocation.MaxLifeTime := 3600;
FServer.OnSTUNRequestAuthorization := OnSTUNRequestAuthorization;
FServer.Active := True;
end;
procedure TFormTURNServer.OnSTUNRequestAuthorization(Sender: TObject;
const aRequest: TsgcSTUN_Message;
const aUsername, aRealm: string;
var Password: string);
begin
// restituisci la password di quell'utente, vuota rifiuta la richiesta
Password := LookupPassword(aUsername);
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcTURNServer *Server = new TsgcTURNServer(this);
Server->Port = 3478;
Server->TURNOptions->Authentication->Enabled = true;
Server->TURNOptions->Authentication->LongTermCredentials->Enabled = true;
Server->TURNOptions->Authentication->LongTermCredentials->Realm = "turn.example.com";
Server->TURNOptions->Allocation->MaxUserAllocations = 4;
Server->OnSTUNRequestAuthorization = OnSTUNRequestAuthorization;
Server->Active = true;
Un relay self-hosted — permette ai tuoi deployment WebRTC e ICE di smettere di dipendere da provider TURN di terze parti.
Onora le richieste Allocate con REQUESTED-TRANSPORT, sceglie una porta di relay libera e traccia la durata. Refresh estende l'allocazione; il server la termina alla scadenza.
Traccia permessi peer e channel binding per ogni allocazione. Scarta frame Send/Data per peer non autorizzati, secondo RFC 8656 §9.
Sono supportati sia gli envelope Send / Data da 36 byte sia i frame ChannelData da 4 byte. Il relay inoltra datagrammi tra il relayed-transport-address e il peer associato.
TURNOptions.Authentication.LongTermCredentials contiene il realm, e OnSTUNRequestAuthorization ti espone lo username e quel realm così restituisci la password. Il server valida MESSAGE-INTEGRITY e ruota da solo i nonce.
TURNOptions.Allocation.MaxUserAllocations limita quanti relay ottiene un utente, DefaultLifeTime e MaxLifeTime limitano quanto vive ciascuno, e MinPort / MaxPort / RelayIP fissano l'intervallo di relay. Un utente oltre il limite riceve 486 Allocation Quota Reached.
OnTURNBeforeAllocate ti passa l'indirizzo richiedente con un var Reject, e OnTURNBeforeRelayIndication e OnTURNBeforeRelayChannelData fanno lo stesso per ogni datagramma inoltrato. OnTURNCreateAllocation e OnTURNDeleteAllocation tracciano quelle attive.
Collegamenti diretti al riferimento del componente, al progetto demo pronto all'uso e al download della versione di prova.
| Guida online — TsgcTURNServer Riferimento completo di proprietà, metodi ed eventi di questo componente. | Apri | |
| Progetto demo — Demos\35.P2P\03.TURN Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto. | Apri | |
| Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente. | Apri | |
| Manuale utente (PDF) Manuale completo che copre ogni componente della libreria. | Apri |
Domande comuni sull'esecuzione di un relay TURN self-hosted in Delphi e C++ Builder.
TsgcTURNServer, imposta Port e Realm, fornisci le password per utente dall'evento OnSTUNRequestAuthorization, poi imposta Active := True. Il server gestisce quindi Allocate, CreatePermission, ChannelBind, Send, Refresh e Data per qualsiasi client RFC 8656, inoltrando i datagram tra l'indirizzo di trasporto relayed e il peer associato.TsgcTURNServer è un relay self-hosted che integri nella tua applicazione Delphi o C++ Builder, così i tuoi deployment WebRTC e ICE possono smettere di dipendere da provider TURN di terze parti o da un'installazione coturn separata. Le quote per allocazione (max allocazioni per utente, banda e durata) limitano gli abusi, con OnQuotaExceeded che segnala i rifiuti.