Eine native Pascal-Implementierung des WebRTC-Peer-to-Peer-Stacks: RTCPeerConnection, ICE-Candidate-Gathering und Connectivity Checks, STUN- und TURN-Client + -Server, DTLS-SRTP-Schlüsselvereinbarung und SCTP-Data-Channels — mit bereits verdrahteter WebSocket-Signalisierung.
Bring browserreifes P2P nach Delphi — ohne Chromium zu bundeln.
Eine Delphi-WebRTC-Bibliothek erlaubt es zwei Delphi-Prozessen (oder einem Delphi-Prozess und einem Browser), einen direkten, NAT-durchquerenden, Ende-zu-Ende-verschlüsselten Kanal aufzubauen — ohne den Payload über einen zentralen Server zu schicken. sgcWebSockets stellt jeden WebRTC-Baustein als Pascal-Komponente bereit: TsgcWSPClient_WebRTC spiegelt die JavaScript-API RTCPeerConnection, TsgcSTUNClient / TsgcSTUNServer implementieren RFC 5389, TsgcTURNClient / TsgcTURNServer implementieren RFC 5766, und ein vollständiger ICE-Agent verbindet sie.
Im Gegensatz zu browserbasierten Stacks (die Chromium oder libwebrtc erfordern — zig Megabyte nativen Codes plus komplizierter Build) ist die sgcWebSockets-Implementierung reines Pascal auf OpenSSL und wird direkt in deine Binary kompiliert. Sie läuft von Delphi 7 bis Delphi 13 und liefert native Binaries für Win32/Win64, Linux64, macOS, iOS und Android.
Eingebauter SDP-Serialisierer und -Parser. Generiere Offers, akzeptiere Answers, trickle ICE-Candidates in genau dem Wire-Format, das Chrome und Firefox erzeugen.
Eigenständiger STUN-Client und STUN-Server für NAT-Discovery und Keep-Alive. Betreibe deinen eigenen STUN-Endpunkt mit zwei Zeilen Pascal.
TURN-Client + -Server
TURN-Client für Relay-Allokation und TURN-Server zum Selbsthosten. Long-Term Credentials, IPv4 + IPv6.
DTLS-SRTP
Das verpflichtende Schlüsselvereinbarungsprotokoll für WebRTC. DTLS-1.2-Handshake über denselben ICE-ausgehandelten UDP-Pfad — mit Export des Keying Materials für SRTP.
SCTP-Data-Channels
Zuverlässige/unzuverlässige, geordnete/ungeordnete Nachrichten über den WebRTC-Media-Transport — der Standardweg, beliebige Anwendungsdaten peer-to-peer zu senden.
WebSocket-Signalisierung
Nutze die mitgelieferten TsgcWebSocketClient / TsgcWebSocketHTTPServer als Signalisierungskanal — eine Bibliothek für alles.
Signalisierung
WebSocket-Signalisierung: das Standardmuster
WebRTC definiert kein Signalisierungsprotokoll — das bringst du selbst mit. Die übliche Wahl ist ein WebSocket-Kanal, der drei Nachrichtentypen trägt: offer (SDP vom Anrufer), answer (SDP vom Angerufenen) und ice-candidate (Candidates, die von beiden Seiten getrickelt werden). sgcWebSockets enthält bereits beide Enden des Signalisierungsservers: TsgcWebSocketHTTPServer mit einer Channels-Implementierung, die JSON-Nachrichten zwischen gepaarten Peers routet.
Weil Peer-Connection-Komponente und Signalisierungsserver in derselben Bibliothek leben, kannst du eine komplette WebRTC-Anwendung — koordinierte Discovery, NAT-Traversal, verschlüsselter P2P-Payload — aufziehen, ohne ein einziges Drittanbieter-SDK zu integrieren.
NAT-Traversal
ICE-Server konfigurieren
Dieselbe IceServers-Collection, die ein Browser verwendet — mit öffentlichen Servern und deinem eigenen privaten TURN.
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 failswith RTC.IceServers.Add dobegin
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');
Self-Hosting
Eigenes STUN/TURN in Delphi betreiben
Die meisten Teams starten mit dem öffentlichen Google-STUN und einem TURN-Drittanbieterservice (Twilio, Xirsys, coturn). Wenn der Traffic wächst, wächst die Relay-Bandbreitenrechnung mit — und TURN ist in der Praxis das einzige Stück WebRTC, für das du pro Byte zahlst. Die Bibliothek erlaubt das Selbst-Hosting: TsgcSTUNServer und TsgcTURNServer fügen sich in eine Konsolen-Anwendung oder einen Windows-Dienst ein und sprechen das Protokoll auf UDP 3478 (STUN) und auf konfigurierbaren TCP/UDP/TLS-Ports für TURN. Long-Term Credentials, IPv4- und IPv6-Dual-Stack, Allokationsquoten und Bandbreitenlimits pro Benutzer sind alle eingebaut.