Delphi RTCPeerConnection
Sprich WebRTC aus Delphi/C++Builder — ICE für die Konnektivität, DTLS für den Keying-Handshake, SRTP für Medien, SCTP-over-DTLS für DataChannels. Kein Browser erforderlich.
Sprich WebRTC aus Delphi/C++Builder — ICE für die Konnektivität, DTLS für den Keying-Handshake, SRTP für Medien, SCTP-over-DTLS für DataChannels. Kein Browser erforderlich.
Nativer Delphi-WebRTC-Peer — bildet die W3C-RTCPeerConnection-Oberfläche ab (CreateOffer / CreateAnswer / SetRemoteDescription / AddIceCandidate / DataChannel), gestützt auf die mitgelieferten ICE-, DTLS-, SRTP- und SCTP-Stacks.
TsgcRTCPeerConnection
Windows, macOS, Linux, iOS, Android
Enterprise für die Komponente, dazu das sgcWebRTC-Pack für Offer und Answer, DataChannels und Tracks. Beides ist in All-Access enthalten.
Der Enterprise-Block von sgcVer.inc definiert SGC_ICE, SGC_DTLS, SGC_RTCPEERCONNECTION und SGC_TURN. Das bringt TsgcRTCPeerConnection auf die Palette und gibt ihr einen ICE- und TURN-Transport. Die Offer- und Answer-Methoden, die DataChannel-API und die Medien-API liegen in SGC_SDP, SGC_DATACHANNEL und SGC_RTP, und die definiert nur SGC_PACK_WEBRTC. Sie brauchen das sgcWebRTC-Pack zusätzlich zu Enterprise, oder All-Access, das es bereits aktiviert.
Füllen Sie RTCOptions.ICEServers, rufen Sie CreateOffer auf, senden Sie das SDP, das Ihnen OnLocalDescription übergibt, über Ihren Signalisierungskanal an den Remote-Peer, setzen Sie das zurückkommende Answer, und der Datenpfad steht.
uses
sgcP2P, sgcP2P_DataChannel;
// TFormPeer hält FPeer, FChannel, FIncoming: TStringList und die Handler
procedure TFormPeer.CreatePeer;
begin
FPeer := TsgcRTCPeerConnection.Create(nil);
FPeer.RTCOptions.ICEServers.AddURL('stun:stun.l.google.com:19302');
FPeer.RTCOptions.ICE.TURN := False; // noch kein TURN-Server
FPeer.OnLocalDescription := OnLocalDescription;
FPeer.OnDataChannel := OnDataChannel;
// ausgehende Seite. CreateDataChannel schaltet RTCOptions.DTLS ein
FChannel := FPeer.CreateDataChannel('chat');
FChannel.OnMessage := OnChannelMessage;
FPeer.CreateOffer;
end;
procedure TFormPeer.OnLocalDescription(Sender: TObject;
const aType, aSDP: string);
begin
// aType ist 'offer' oder 'answer'
SignalToPeer(aType, aSDP); // über Ihren WebSocket-Signalisierungskanal
end;
procedure TFormPeer.OnDataChannel(Sender: TObject;
aChannel: TsgcRTCDataChannel);
begin
FChannel := aChannel;
FChannel.OnMessage := OnChannelMessage;
end;
procedure TFormPeer.OnChannelMessage(Sender: TObject;
const aText: string);
begin
// feuert in einem Worker-Thread, vor dem Zugriff auf ein Control marshallen
FIncoming.Add(aText);
end;
// includes: sgcP2P.hpp, sgcP2P_DataChannel.hpp
TsgcRTCPeerConnection *Peer = new TsgcRTCPeerConnection(this);
Peer->RTCOptions->ICEServers->AddURL("stun:stun.l.google.com:19302");
Peer->RTCOptions->ICE->TURN = false; // noch kein TURN-Server
Peer->OnLocalDescription = OnLocalDescription;
Peer->OnDataChannel = OnDataChannel;
TsgcRTCDataChannel *Channel = Peer->CreateDataChannel("chat");
Peer->CreateOffer();
void __fastcall TFormPeer::OnLocalDescription(TObject *Sender,
const String aType, const String aSDP)
{
SignalToPeer(aType, aSDP); // über Ihren WebSocket-Signalisierungskanal
}
void __fastcall TFormPeer::OnDataChannel(TObject *Sender,
TsgcRTCDataChannel *aChannel)
{
aChannel->OnMessage = OnChannelMessage;
}
Vollständiges Beispiel: zwei Delphi-Anwendungen von Anfang bis Ende
Ein nativer WebRTC-Peer, der ICE, DTLS, SRTP und SCTP in einer einzigen Komponente bündelt — mit gleicher Oberfläche wie die W3C-RTCPeerConnection-API.
CreateOffer und CreateAnswer erzeugen RFC-8866-SDP mit den passenden ICE-UFRAG-, ICE-PWD-, FINGERPRINT- und SETUP-Attributen; SetRemoteDescription liest das SDP des Peers ein.
Verwendet intern TsgcICEClient für Kandidatensammlung und Konnektivitätsprüfungen; AddIceCandidate speist Remote-Kandidaten ein, sobald sie aus dem Signalling eintreffen.
Sobald das ausgewählte ICE-Paar schreibbar wird, führt die Komponente einen DTLS-Handshake (RFC 6347) durch und exportiert das SRTP-Schlüsselmaterial mit dem Label EXTRACTOR-dtls_srtp aus RFC 5764. RTCOptions.DTLS ist standardmäßig False, und CreateDataChannel schaltet es für Sie ein.
CreateDataChannel öffnet einen über DTLS multiplexten SCTP-Stream — reliable / partial-reliable, ordered / unordered, mit Backpressure über BufferedAmount.
AddTrack veröffentlicht einen Audio- oder Video-Track, OnTrack empfängt den entfernten, beide über SRTP. Die begleitende TsgcWSPServer_RTCPeerConnection ist der WebSocket-Signalisierungs-Broker: Sie führt Anrufer und Angerufenen zusammen und leitet deren SDP und Kandidaten weiter.
Interoperabel mit Browser-RTCPeerConnection — getestet gegen Chromium / Firefox / Safari. Gleiche SDP-Semantik, gleiche ICE-Kandidaten, gleiches DataChannel-Wire-Format.
Maßgebliche Quellen für das Protokoll, das diese Komponente implementiert.
Springe direkt zur Komponentenreferenz, hole dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.
| Online-Hilfe — TsgcRTCPeerConnection Vollständige Referenz zu Eigenschaften, Methoden und Ereignissen dieser Komponente. | Öffnen | |
| Demo-Projekt — Demos\35.P2P\05.RTCPeerConnection Sofort lauffähiges Beispielprojekt. Wird im sgcWebSockets-Paket mitgeliefert — lade unten die Testversion herunter. | Öffnen | |
| Technisches Dokument (PDF) Funktionen, Schnellstart, Code-Beispiele für Delphi & C++ Builder und Primärquellen-Referenzen — nur diese Komponente. | Öffnen | |
| Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek abdeckt. | Öffnen |