Biblioteka WebRTC dla Delphi — P2P, ICE, STUN, TURN, DataChannel
Natywna implementacja Pascala stosu peer-to-peer WebRTC: RTCPeerConnection, zbieranie kandydatów ICE i sprawdzanie łączności, klient i serwer STUN i TURN, uzgadnianie kluczy DTLS-SRTP i kanały danych SCTP — z już podłączoną sygnalizacją WebSocket.
Przynieś P2P klasy przeglądarki do Delphi — bez paczkowania Chromium.
Biblioteka WebRTC dla Delphi pozwala dwóm procesom Delphi (lub procesowi Delphi i przeglądarce) ustanowić bezpośredni, traversujący NAT, szyfrowany end-to-end kanał bez routingu ładunku przez centralny serwer. sgcWebSockets dostarcza każdy klocek WebRTC jako komponent Pascala: TsgcRTCPeerConnection odzwierciedla API RTCPeerConnection według W3C, TsgcSTUNClient / TsgcSTUNServer implementują RFC 8489, TsgcTURNClient / TsgcTURNServer implementują RFC 8656, a TsgcICEClient, kompletny agent ICE, wiąże je razem.
W przeciwieństwie do stosów opartych na przeglądarce (które wymagają Chromium lub libwebrtc — dziesiątki megabajtów natywnego kodu i skomplikowanej kompilacji), implementacja sgcWebSockets to czysty Pascal na bazie OpenSSL i jest skompilowana do Twojego binarnego. Działa na Delphi 7 do Delphi 13 i dostarcza natywne binaria dla Win32/Win64, Linux64, macOS, iOS i Android.
Enterprise dla komponentów oraz pakiet sgcWebRTC dla offer i answer, DataChannels i ścieżek. Oba są dostępne w All-Access.
Klocki
Każdy komponent WebRTC, udostępniony
Peer connection jest nagłówkiem, ale wspierające części są również komponentami pierwszej klasy.
RTCPeerConnection
TsgcRTCPeerConnection odzwierciedla API W3C: CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, CreateDataChannel, AddTrack. Zobacz RTCPeerConnection.
SDP offer / answer
Wbudowany serializator i parser SDP. Generuj oferty, akceptuj odpowiedzi, trickle kandydatów ICE w tym samym formacie wire, który produkują Chrome i Firefox.
Agent ICE
Pełne zbieranie kandydatów: host, server-reflexive (odkryte przez STUN), relayed (zaalokowane przez TURN). Parowanie, priorytetyzacja i sprawdzenia łączności według RFC 8445. Strona ICE.
Klient i serwer STUN
Samodzielny klient STUN i serwer STUN dla odkrywania NAT i keep-alive. Uruchom własny endpoint STUN w dwóch liniach Pascala.
Klient i serwer TURN
Klient TURN dla alokacji relayu i serwer TURN do samohostingu. Długoterminowe poświadczenia, IPv4 + IPv6.
DTLS-SRTP
Obowiązkowy protokół uzgadniania kluczy WebRTC. Handshake DTLS 1.2 nad tą samą ścieżką UDP wynegocjowaną przez ICE, eksportujący materiał kluczowy dla SRTP.
Kanały danych SCTP
Wiadomości niezawodne / niewiarygodne, uporządkowane / nieuporządkowane nad transportem mediów WebRTC — standardowy sposób wysyłania dowolnych danych aplikacji peer-to-peer.
Sygnalizacja WebSocket
Użyj dołączonych TsgcWebSocketClient / TsgcWebSocketHTTPServer jako kanału sygnalizacji albo gotowej pary protokołów TsgcWSPClient_RTCPeerConnection i TsgcWSPServer_RTCPeerConnection. Jedna biblioteka do wszystkiego.
Sygnalizacja
Sygnalizacja WebSocket: standardowy wzorzec
WebRTC nie definiuje protokołu sygnalizacji — przynosisz własny. Konwencjonalnym wyborem jest kanał WebSocket, który niesie trzy typy wiadomości: offer (SDP od dzwoniącego), answer (SDP od wywoływanego) i ice-candidate (kandydaci przesyłani stopniowo przez którąkolwiek stronę). sgcWebSockets zawiera już oba końce tego kanału. TsgcWSPServer_RTCPeerConnection paruje dzwoniącego z wywoływanym i przekazuje ich opisy oraz kandydatów, TsgcWSPClient_RTCPeerConnection to odpowiadający mu klient, a TsgcWSPServer_WebRTC wykonuje to samo zadanie dla peerów przeglądarkowych, wysyłając do każdego z nich listę serwerów ICE w chwili dołączenia.
Ponieważ komponent peer-connection i serwer sygnalizacji żyją w tej samej bibliotece, możesz postawić kompletną aplikację WebRTC — skoordynowane odkrywanie, traversal NAT, szyfrowany ładunek P2P — bez integrowania pojedynczego SDK strony trzeciej.
Traversal NAT
Konfigurowanie serwerów ICE
Ta sama lista iceServers, której używa przeglądarka, udostępniona jako RTCOptions.ICEServers — z publicznymi serwerami i własnym prywatnym TURN.
Większość zespołów zaczyna od publicznego Google STUN i usługi TURN strony trzeciej (Twilio, Xirsys, coturn). Gdy ruch rośnie, rachunek za pasmo relayu też rośnie — a TURN to w praktyce jedyna część WebRTC, w której płacisz per-bajt. Biblioteka pozwala samohostować: TsgcSTUNServer i TsgcTURNServer wpadają do aplikacji konsolowej lub usługi Windows i domyślnie odpowiadają na UDP 3478, na dowolnym porcie i adresie, który wpiszesz do Bindings. Poświadczenia long-term, IPv4 i IPv6, zakres portów relayu w TURNOptions.Allocation oraz limit alokacji na użytkownika są wbudowane.