Componente servidor TURN para Delphi y C++ Builder | eSeGeCe

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.

Preguntas frecuentes sobre el servidor TURN

Preguntas habituales sobre la ejecución de un relay TURN autoalojado en Delphi y C++ Builder.

Coloca un componente TsgcTURNServer, establece Port y Realm, proporciona las contraseñas por usuario desde el evento OnTURNAuthenticate, y luego pon Active := True. El servidor maneja entonces Allocate, CreatePermission, ChannelBind, Send, Refresh y Data para cualquier cliente RFC 8656, retransmitiendo datagramas entre la dirección de transporte retransmitida y el peer vinculado.
Implementa TURN según RFC 8656, validando las credenciales de largo plazo con MESSAGE-INTEGRITY y rotando los nonces automáticamente. También referencia el RFC 6062 para las asignaciones de TURN sobre TCP y el RFC 8489 para el formato de mensaje STUN subyacente, y soporta los transportes UDP, TCP y TLS sobre TCP.
No. TsgcTURNServer es un relay autoalojado que integras en tu propia aplicación Delphi o C++ Builder, de modo que tus despliegues de WebRTC e ICE pueden dejar de depender de proveedores TURN de terceros o de una instalación de coturn separada. Las cuotas por asignación (máximo de asignaciones por usuario, ancho de banda y tiempo de vida) limitan el abuso, con OnQuotaExceeded informando de los rechazos.
El servidor TURN forma parte de la edición Enterprise de sgcWebSockets y es compatible desde Delphi 7 hasta la última versión de Delphi y las versiones de C++ Builder correspondientes, en Windows, macOS, Linux, iOS y Android. Descarga la prueba gratuita para levantar un relay TURN en tu propio proyecto.

¿Listo para ejecutar tu propio servidor TURN?

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