Bibliothèque WebRTC Delphi — P2P, ICE, STUN, TURN, DataChannel

Une implémentation Pascal native de la pile peer-to-peer WebRTC : RTCPeerConnection, gathering de candidats ICE et checks de connectivité, client + serveur STUN et TURN, accord de clés DTLS-SRTP et canaux de données SCTP — avec la signalisation WebSocket déjà câblée.

Peer-to-peer pour Pascal, de bout en bout

Apportez du P2P de qualité navigateur à Delphi — sans embarquer Chromium.

Une bibliothèque WebRTC Delphi permet à deux processus Delphi (ou un processus Delphi et un navigateur) d'établir un canal direct, traversant le NAT, chiffré de bout en bout sans router le payload via un serveur central. sgcWebSockets fournit chaque brique WebRTC sous forme de composant Pascal : TsgcWSPClient_WebRTC reflète l'API JavaScript RTCPeerConnection, TsgcSTUNClient / TsgcSTUNServer implémentent la RFC 5389, TsgcTURNClient / TsgcTURNServer implémentent la RFC 5766, et un agent ICE complet les lie ensemble.

Contrairement aux piles basées sur navigateur (qui nécessitent Chromium ou libwebrtc — des dizaines de mégaoctets de code natif et un build compliqué) l'implémentation sgcWebSockets est du Pascal pur au-dessus d'OpenSSL et est compilée dans votre binaire. Elle tourne de Delphi 7 à Delphi 13 et livre des binaires natifs pour Win32/Win64, Linux64, macOS, iOS et Android.

Peer connection

TsgcWSPClient_WebRTC

ICE / STUN / TURN

Composants P2P

Standards

RFC 8825 / 5245 / 5389 / 5766 / 6347 / 4960

Édition

Enterprise

Chaque composant WebRTC, exposé

La peer connection est la vedette, mais les pièces de support sont aussi des composants de premier ordre.

RTCPeerConnection

TsgcWSPClient_WebRTC reflète l'API JavaScript : CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, CreateDataChannel. Voir RTCPeerConnection.

Offer / answer SDP

Sérialiseur et parseur SDP intégrés. Générez des offres, acceptez des answers, trickle ICE candidates avec le même format wire que Chrome et Firefox produisent.

Agent ICE

Gathering complet de candidats : host, server-reflexive (découverts par STUN), relayed (alloués par TURN). Appariement, priorisation et checks de connectivité selon la RFC 5245. Page ICE.

Client + serveur STUN

Client STUN et serveur STUN autonomes pour la découverte NAT et le keep-alive. Faites tourner votre propre endpoint STUN avec deux lignes de Pascal.

Client + serveur TURN

Client TURN pour l'allocation de relais et serveur TURN pour l'auto-hébergement. Identifiants long terme, IPv4 + IPv6.

DTLS-SRTP

Le protocole d'accord de clés WebRTC obligatoire. Handshake DTLS 1.2 sur le même chemin UDP négocié par ICE, exportant du matériel de clés pour SRTP.

Canaux de données SCTP

Messages fiables / non fiables, ordonnés / non ordonnés sur le transport média WebRTC — la façon standard d'envoyer des données applicatives arbitraires peer-to-peer.

Signalisation WebSocket

Utilisez les TsgcWebSocketClient / TsgcWebSocketHTTPServer livrés comme canal de signalisation — une bibliothèque pour tout.

Signalisation WebSocket : le pattern standard

WebRTC ne définit pas de protocole de signalisation — vous apportez le vôtre. Le choix conventionnel est un canal WebSocket qui porte trois types de messages : offer (SDP de l'appelant), answer (SDP de l'appelé) et ice-candidate (candidats trickle par l'un ou l'autre côté). sgcWebSockets inclut les deux extrémités du serveur de signalisation déjà : TsgcWebSocketHTTPServer avec une implémentation Channels qui route les messages JSON entre pairs appariés.

Parce que le composant peer-connection et le serveur de signalisation vivent dans la même bibliothèque, vous pouvez monter une application WebRTC complète — découverte coordonnée, traversée NAT, payload P2P chiffré — sans intégrer un seul SDK tiers.

Configurer les serveurs ICE

La même collection IceServers qu'un navigateur utilise — avec à la fois des serveurs publics et votre propre TURN privé.

uses
  sgcWebSocket, sgcWebSocket_Protocol_WebRTC_Client,
  sgcWebSocket_Protocol_WebRTC_Types;

var
  WSClient: TsgcWebSocketClient;
  RTC: TsgcWSPClient_WebRTC;
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.URL := 'wss://signal.example.com/rtc';

  RTC := TsgcWSPClient_WebRTC.Create(nil);
  RTC.Client := WSClient;

  // Public Google STUN for NAT discovery
  RTC.IceServers.Add.URL := 'stun:stun.l.google.com:19302';

  // Your own TURN for relay when P2P fails
  with RTC.IceServers.Add do
  begin
    URL        := 'turn:turn.example.com:3478';
    UserName   := 'alice';
    Credential := 's3cret';
  end;

  RTC.OnDataChannelMessage := DoMessage;

  WSClient.Active := True;

  // Create a reliable, ordered data channel
  RTC.CreateDataChannel('chat', True, True);
  RTC.CreateOffer;
end;

procedure TForm1.DoMessage(Sender: TObject;
  const aChannel, aText: string);
begin
  Memo1.Lines.Add(aChannel + ': ' + aText);
end;

// Send a message peer-to-peer
RTC.SendDataChannelMessage('chat', 'Hello from Delphi');

Faites tourner votre propre STUN / TURN en Delphi

La plupart des équipes commencent avec le STUN public Google et un service TURN tiers (Twilio, Xirsys, coturn). Quand le trafic monte, la facture de bande passante relais monte aussi — et TURN est, en pratique, la seule pièce de WebRTC où vous payez à l'octet. La bibliothèque vous laisse l'auto-héberger : TsgcSTUNServer et TsgcTURNServer se déposent dans une application console ou un service Windows et servent le protocole sur UDP 3478 (STUN) et TCP/UDP/TLS sur des ports configurables pour TURN. Identifiants long terme, IPv4 et IPv6 dual-stack, quotas d'allocation et limites de bande passante par utilisateur sont tous intégrés.

Plus sur P2P dans sgcWebSockets

Hub P2P / WebRTC

Page d'atterrissage pour chaque composant peer-to-peer.

RTCPeerConnection

Référence détaillée du composant.

Agent ICE

Gathering de candidats et checks de connectivité.

STUN et TURN

Serveurs de découverte NAT et de relais.

Blog : RTCPeerConnection P2P

Marche à suivre de bout en bout d'un data channel Delphi-à-Delphi.

Blog : Serveur et client STUN + TURN

Auto-héberger votre propre infrastructure STUN/TURN en Delphi.

Blog : coturn sous Windows

Référence croisée avec l'implémentation C de référence pour les tests d'interopérabilité.

Construisez votre premier canal P2P

Téléchargez l'essai — les démos WebRTC, STUN et TURN sont livrées comme projets Delphi compilables.