TURN Server

Ejecuta tu propio servidor TURN (RFC 8656) en Delphi. Asigna direcciones de transporte retransmitidas para clientes que no pueden establecer una ruta peer-to-peer, con credenciales long-term y cuotas por asignación.

TsgcTURNServer

Un servidor TURN autoalojado — procesa Allocate / CreatePermission / ChannelBind / Send / Refresh / Data, gestiona asignaciones y ancho de banda, valida credenciales long-term.

Clase del componente

TsgcTURNServer

Protocolo

TURN (RFC 8656)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Enterprise

Coloca, configura el realm, entrega credenciales

Configura Port + Realm, proporciona contraseñas por usuario mediante OnTURNAuthenticate, Active := True — tu servidor asignará relays a cualquier cliente 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;

Qué incluye

Un relay autoalojado — permite que tus despliegues WebRTC e ICE dejen de depender de proveedores TURN externos.

Allocate / Refresh / Free

Atiende las peticiones Allocate con REQUESTED-TRANSPORT, elige un puerto de relay libre y controla su duración. Refresh prolonga la asignación; el servidor la elimina al expirar.

CreatePermission / ChannelBind

Controla los permisos por par y los channel bindings por asignación. Descarta frames Send/Data de pares que no han sido permitidos según RFC 8656 §9.

Send / Data / ChannelData

Se admiten tanto los sobres Send / Data de 36 bytes como los frames ChannelData de 4 bytes. El relay reenvía datagramas entre la dirección de transporte retransmitida y el par enlazado.

Credenciales long-term

OnTURNAuthenticate expone el nombre de usuario; tú devuelves la contraseña — el servidor valida MESSAGE-INTEGRITY y rota los nonces automáticamente.

Cuotas

Configura Quota.MaxAllocationsPerUser, Quota.MaxBandwidthKbps, Quota.AllocationLifetime para acotar el abuso. OnQuotaExceeded informa de los rechazos.

TURN sobre TCP / TLS

Cambia el transporte del servidor subyacente — UDP, TCP y TLS sobre TCP están soportados. Los clientes WebRTC eligen el que atraviesa su NAT.

Especificaciones y referencias

Fuentes autorizadas del protocolo que implementa este componente.

Documentación y demos

Accede a la referencia del componente, descarga el proyecto demo listo para ejecutar y la versión de prueba.

Ayuda en línea — TsgcTURNServer Referencia completa de propiedades, métodos y eventos de este componente.
Proyecto demo — Demos\35.P2P\03.TURN Proyecto de ejemplo listo para ejecutar. Se incluye dentro del paquete sgcWebSockets — descarga la prueba abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias a fuentes primarias — solo este componente.
Manual de usuario (PDF) Manual completo que cubre cada componente de la biblioteca.

¿Listo para ejecutar tu propio servidor TURN?

Descarga la prueba gratuita y levanta un relay TURN en Delphi.