RTCPeerConnection dla Delphi
Talk WebRTC from Delphi/C++Builder — ICE for connectivity, DTLS for the keying handshake, SRTP for media, SCTP-over-DTLS for DataChannels. No browser required.
Talk WebRTC from Delphi/C++Builder — ICE for connectivity, DTLS for the keying handshake, SRTP for media, SCTP-over-DTLS for DataChannels. No browser required.
Natywny peer WebRTC dla Delphi — odzwierciedla interfejs W3C RTCPeerConnection (CreateOffer / CreateAnswer / SetRemoteDescription / AddIceCandidate / DataChannel) oparty na wbudowanych stosach ICE, DTLS, SRTP i SCTP.
TsgcRTCPeerConnection
Windows, macOS, Linux, iOS, Android
Enterprise dla samego komponentu, plus pakiet sgcWebRTC dla offer i answer, DataChannels oraz ścieżek mediów. Oba są w All-Access.
Blok Enterprise w sgcVer.inc definiuje SGC_ICE, SGC_DTLS, SGC_RTCPEERCONNECTION i SGC_TURN, i to właśnie umieszcza TsgcRTCPeerConnection na palecie oraz daje mu transport ICE i TURN. Metody offer i answer, API DataChannel oraz API mediów leżą wewnątrz SGC_SDP, SGC_DATACHANNEL i SGC_RTP, a definiuje je wyłącznie SGC_PACK_WEBRTC. Wymagają pakietu sgcWebRTC ponad Enterprise albo All-Access, który włącza go za Ciebie.
Wypełnij RTCOptions.ICEServers, wywołaj CreateOffer, wyślij zdalnemu peerowi swoim kanałem sygnalizacyjnym SDP, które przekazuje Ci OnLocalDescription, ustaw wracający answer i ścieżka danych staje się aktywna.
uses
sgcP2P, sgcP2P_DataChannel;
// TFormPeer trzyma FPeer, FChannel, FIncoming: TStringList i obsługi zdarzeń
procedure TFormPeer.CreatePeer;
begin
FPeer := TsgcRTCPeerConnection.Create(nil);
FPeer.RTCOptions.ICEServers.AddURL('stun:stun.l.google.com:19302');
FPeer.RTCOptions.ICE.TURN := False; // na razie bez serwera TURN
FPeer.OnLocalDescription := OnLocalDescription;
FPeer.OnDataChannel := OnDataChannel;
// strona wychodząca. CreateDataChannel włącza RTCOptions.DTLS
FChannel := FPeer.CreateDataChannel('chat');
FChannel.OnMessage := OnChannelMessage;
FPeer.CreateOffer;
end;
procedure TFormPeer.OnLocalDescription(Sender: TObject;
const aType, aSDP: string);
begin
// aType to 'offer' albo 'answer'
SignalToPeer(aType, aSDP); // przez Twój kanał sygnalizacyjny WebSocket
end;
procedure TFormPeer.OnDataChannel(Sender: TObject;
aChannel: TsgcRTCDataChannel);
begin
FChannel := aChannel;
FChannel.OnMessage := OnChannelMessage;
end;
procedure TFormPeer.OnChannelMessage(Sender: TObject;
const aText: string);
begin
// leci w wątku roboczym, przenieś je zanim dotkniesz kontrolki
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; // na razie bez serwera TURN
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); // przez Twój kanał sygnalizacyjny WebSocket
}
void __fastcall TFormPeer::OnDataChannel(TObject *Sender,
TsgcRTCDataChannel *aChannel)
{
aChannel->OnMessage = OnChannelMessage;
}
Natywny peer WebRTC łączący ICE, DTLS, SRTP i SCTP w jednym komponencie — odzwierciedlający API W3C RTCPeerConnection.
CreateOffer i CreateAnswer generują SDP zgodny z RFC 8866 z właściwymi atrybutami ICE-UFRAG / ICE-PWD / FINGERPRINT / SETUP; SetRemoteDescription przyjmuje SDP zdalnego peera.
Wewnętrznie używa TsgcICEClient do zbierania kandydatów i sprawdzania łączności; AddIceCandidate dostarcza zdalne kandydaty w miarę ich napływania z kanału sygnalizacyjnego.
Gdy wybrana para ICE staje się zapisywalna, komponent wykonuje handshake DTLS (RFC 6347) i eksportuje materiał kluczy SRTP etykietą EXTRACTOR-dtls_srtp z RFC 5764. RTCOptions.DTLS ma domyślnie wartość False, a CreateDataChannel włącza je za Ciebie.
CreateDataChannel otwiera strumień SCTP multipleksowany przez DTLS — niezawodny / częściowo niezawodny, z kolejnością lub bez, z regulacją przepływu przez BufferedAmount.
AddTrack publikuje ścieżkę audio lub wideo, a OnTrack odbiera ścieżkę zdalną, obie po SRTP. Towarzyszący TsgcWSPServer_RTCPeerConnection jest brokerem sygnalizacji WebSocket: łączy dzwoniącego z odbierającym i przekazuje ich SDP oraz kandydatów.
Współpracuje z RTCPeerConnection w przeglądarce — przetestowany z Chromium / Firefox / Safari. Te same semantyki SDP, te same kandydaty ICE, ten sam format DataChannel.
Autorytatywne źródła protokołu implementowanego przez ten komponent.
Przejdź do dokumentacji komponentu, pobierz gotowy projekt demonstracyjny i wersję próbną.
| Pomoc online — TsgcRTCPeerConnection Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu. | Otwórz | |
| Projekt demonstracyjny — Demos\35.P2P\05.RTCPeerConnection Gotowy do uruchomienia przykładowy projekt. Dołączony do pakietu sgcWebSockets — pobierz wersję próbną poniżej. | Otwórz | |
| Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł pierwotnych — tylko ten komponent. | Otwórz | |
| Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki. | Otwórz |