Delphi RTCPeerConnection
Delphi/C++Builder'dan WebRTC konuşun — bağlantı için ICE, anahtarlama el sıkışması için DTLS, medya için SRTP, DataChannel'lar için DTLS üzerinden SCTP. Tarayıcı gerekmez.
Delphi/C++Builder'dan WebRTC konuşun — bağlantı için ICE, anahtarlama el sıkışması için DTLS, medya için SRTP, DataChannel'lar için DTLS üzerinden SCTP. Tarayıcı gerekmez.
Yerel Delphi WebRTC eşi — birlikte gelen ICE, DTLS, SRTP ve SCTP yığınlarıyla desteklenen W3C RTCPeerConnection yüzeyini (CreateOffer / CreateAnswer / SetRemoteDescription / AddIceCandidate / DataChannel) yansıtır.
TsgcRTCPeerConnection
Windows, macOS, Linux, iOS, Android
Bileşenin kendisi için Enterprise, offer ve answer, DataChannel ve medya izleri için ayrıca sgcWebRTC paketi gerekir. İkisi de All-Access içinde gelir.
sgcVer.inc dosyasının Enterprise bloğu SGC_ICE, SGC_DTLS, SGC_RTCPEERCONNECTION ve SGC_TURN tanımlar; TsgcRTCPeerConnection bileşenini palete koyan ve ona ICE ile TURN taşımasını veren budur. Offer ve answer metotları, DataChannel API'si ve medya API'si SGC_SDP, SGC_DATACHANNEL ve SGC_RTP içinde yer alır, bunları da yalnızca SGC_PACK_WEBRTC tanımlar. Yani Enterprise üzerine sgcWebRTC paketi ya da paketi zaten etkinleştiren All-Access gerekir.
RTCOptions.ICEServers listesini doldurun, CreateOffer çağırın, OnLocalDescription size verdiği SDP'yi sinyalleşme kanalınızdan uzak eşe gönderin, geri dönen answer'ı ayarlayın, veri yolu açılsın.
uses
sgcP2P, sgcP2P_DataChannel;
// TFormPeer; FPeer, FChannel, FIncoming: TStringList ve işleyicileri tutar
procedure TFormPeer.CreatePeer;
begin
FPeer := TsgcRTCPeerConnection.Create(nil);
FPeer.RTCOptions.ICEServers.AddURL('stun:stun.l.google.com:19302');
FPeer.RTCOptions.ICE.TURN := False; // henüz TURN sunucusu yok
FPeer.OnLocalDescription := OnLocalDescription;
FPeer.OnDataChannel := OnDataChannel;
// giden taraf. CreateDataChannel RTCOptions.DTLS ayarını açar
FChannel := FPeer.CreateDataChannel('chat');
FChannel.OnMessage := OnChannelMessage;
FPeer.CreateOffer;
end;
procedure TFormPeer.OnLocalDescription(Sender: TObject;
const aType, aSDP: string);
begin
// aType 'offer' ya da 'answer' olur
SignalToPeer(aType, aSDP); // WebSocket sinyalleşme kanalınız üzerinden
end;
procedure TFormPeer.OnDataChannel(Sender: TObject;
aChannel: TsgcRTCDataChannel);
begin
FChannel := aChannel;
FChannel.OnMessage := OnChannelMessage;
end;
procedure TFormPeer.OnChannelMessage(Sender: TObject;
const aText: string);
begin
// bir işçi iş parçacığında tetiklenir, kontrole dokunmadan önce ana iş parçacığına aktarın
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; // henüz TURN sunucusu yok
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); // WebSocket sinyalleşme kanalınız üzerinden
}
void __fastcall TFormPeer::OnDataChannel(TObject *Sender,
TsgcRTCDataChannel *aChannel)
{
aChannel->OnMessage = OnChannelMessage;
}
ICE, DTLS, SRTP ve SCTP'yi tek bir bileşende bir araya getiren yerel bir WebRTC eşi — W3C RTCPeerConnection API'sini yansıtır.
CreateOffer ve CreateAnswer, doğru ICE-UFRAG / ICE-PWD / FINGERPRINT / SETUP öznitelikleriyle RFC 8866 SDP üretir; SetRemoteDescription eşin SDP'sini alır.
Aday toplama ve bağlantı denetimleri için dahili olarak TsgcICEClient kullanır; AddIceCandidate, sinyalleşmeden geldikçe uzak adayları besler.
Seçilen ICE çifti yazılabilir hale gelince bileşen bir DTLS el sıkışması (RFC 6347) yürütür ve SRTP anahtar malzemesini RFC 5764'ün EXTRACTOR-dtls_srtp etiketiyle dışa aktarır. RTCOptions.DTLS varsayılan olarak False'tur, CreateDataChannel bunu sizin için açar.
CreateDataChannel, DTLS üzerinde çoklanmış bir SCTP akışı açar — güvenilir / kısmen güvenilir, sıralı / sırasız, BufferedAmount aracılığıyla geri basınçla.
AddTrack bir ses veya video izi yayımlar, OnTrack uzak izi alır, ikisi de SRTP üzerinden akar. Yanında gelen TsgcWSPServer_RTCPeerConnection WebSocket sinyalleşme aracısıdır: arayan ile arananı eşleştirir ve ikisinin SDP'sini ve adaylarını iletir.
Tarayıcı RTCPeerConnection ile birlikte çalışır — Chromium / Firefox / Safari'ye karşı test edilmiştir. Aynı SDP semantiği, aynı ICE adayları, aynı DataChannel iletişim biçimi.
Bu bileşenin uyguladığı protokol için yetkili kaynaklar.
Bileşen referansına doğrudan bağlanın, kullanıma hazır demo projesini alın ve denemeyi indirin.
| Çevrimiçi Yardım — TsgcRTCPeerConnection Bu bileşen için tam özellik, metot ve olay referansı. | Aç | |
| Demo Projesi — Demos\35.P2P\05.RTCPeerConnection Kullanıma hazır örnek proje. sgcWebSockets paketi içinde gelir — aşağıdan denemeyi indirin. | Aç | |
| Teknik Belge (PDF) Delphi ve C++ Builder için özellikler, hızlı başlangıç, kod örnekleri ve birincil kaynak referansları — yalnızca bu bileşen. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç |