RTCPeerConnection in Delphi
Comunica via WebRTC da Delphi/C++Builder — ICE per la connettività, DTLS per l'handshake di chiave, SRTP per il media, SCTP-over-DTLS per i DataChannel. Nessun browser richiesto.
Comunica via WebRTC da Delphi/C++Builder — ICE per la connettività, DTLS per l'handshake di chiave, SRTP per il media, SCTP-over-DTLS per i DataChannel. Nessun browser richiesto.
Peer WebRTC Delphi nativo — rispecchia la superficie W3C RTCPeerConnection (CreateOffer / CreateAnswer / SetRemoteDescription / AddIceCandidate / DataChannel) basata sugli stack inclusi ICE, DTLS, SRTP e SCTP.
TsgcRTCPeerConnection
Windows, macOS, Linux, iOS, Android
Enterprise per il componente, più il pack sgcWebRTC per offer e answer, DataChannel e tracce. Entrambi sono inclusi in All-Access.
Il blocco Enterprise di sgcVer.inc definisce SGC_ICE, SGC_DTLS, SGC_RTCPEERCONNECTION e SGC_TURN, ed è questo che mette TsgcRTCPeerConnection nella palette e le dà un trasporto ICE e TURN. I metodi di offer e answer, l'API DataChannel e l'API media stanno dentro SGC_SDP, SGC_DATACHANNEL e SGC_RTP, che solo SGC_PACK_WEBRTC definisce. Richiedono il pack sgcWebRTC sopra Enterprise, oppure All-Access, che lo abilita già.
Riempi RTCOptions.ICEServers, chiama CreateOffer, manda al peer remoto sul tuo canale di segnalazione l'SDP che OnLocalDescription ti consegna, imposta l'answer che torna indietro, e il percorso dati si accende.
uses
sgcP2P, sgcP2P_DataChannel;
// TFormPeer contiene FPeer, FChannel, FIncoming: TStringList e i gestori
procedure TFormPeer.CreatePeer;
begin
FPeer := TsgcRTCPeerConnection.Create(nil);
FPeer.RTCOptions.ICEServers.AddURL('stun:stun.l.google.com:19302');
FPeer.RTCOptions.ICE.TURN := False; // nessun server TURN per ora
FPeer.OnLocalDescription := OnLocalDescription;
FPeer.OnDataChannel := OnDataChannel;
// lato uscente. CreateDataChannel attiva RTCOptions.DTLS
FChannel := FPeer.CreateDataChannel('chat');
FChannel.OnMessage := OnChannelMessage;
FPeer.CreateOffer;
end;
procedure TFormPeer.OnLocalDescription(Sender: TObject;
const aType, aSDP: string);
begin
// aType è 'offer' oppure 'answer'
SignalToPeer(aType, aSDP); // sul tuo canale di segnalazione 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
// scatta su un thread di lavoro, fai il marshalling prima di toccare un controllo
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; // nessun server TURN per ora
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); // sul tuo canale di segnalazione WebSocket
}
void __fastcall TFormPeer::OnDataChannel(TObject *Sender,
TsgcRTCDataChannel *aChannel)
{
aChannel->OnMessage = OnChannelMessage;
}
Un peer WebRTC nativo che riunisce ICE, DTLS, SRTP e SCTP in un unico componente — rispecchiando l'API W3C RTCPeerConnection.
CreateOffer e CreateAnswer generano SDP RFC 8866 con i giusti attributi ICE-UFRAG / ICE-PWD / FINGERPRINT / SETUP; SetRemoteDescription assimila l'SDP del peer.
Usa TsgcICEClient internamente per la raccolta dei candidati e le verifiche di connettività; AddIceCandidate fornisce i candidati remoti man mano che arrivano dal signalling.
Appena la coppia ICE selezionata diventa scrivibile, il componente esegue un handshake DTLS (RFC 6347) ed esporta il materiale di chiave SRTP con l'etichetta EXTRACTOR-dtls_srtp della RFC 5764. RTCOptions.DTLS vale False per impostazione predefinita e CreateDataChannel lo attiva per te.
CreateDataChannel apre uno stream SCTP multiplexato su DTLS — reliable / partial-reliable, ordered / unordered, con backpressure tramite BufferedAmount.
AddTrack pubblica una traccia audio o video e OnTrack riceve quella remota, entrambe su SRTP. Il componente complementare TsgcWSPServer_RTCPeerConnection è il broker di segnalazione WebSocket: accoppia un chiamante e un chiamato e inoltra i loro SDP e i loro candidati.
Interoperabile con RTCPeerConnection dei browser — testato con Chromium / Firefox / Safari. Stessa semantica SDP, stessi candidati ICE, stesso formato di wire dei DataChannel.
Fonti autorevoli per il protocollo implementato da questo componente.
Collegamenti diretti al riferimento del componente, al progetto demo pronto all'uso e al download della versione di prova.
| Guida online — TsgcRTCPeerConnection Riferimento completo di proprietà, metodi ed eventi di questo componente. | Apri | |
| Progetto demo — Demos\35.P2P\05.RTCPeerConnection Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto. | Apri | |
| Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente. | Apri | |
| Manuale utente (PDF) Manuale completo che copre ogni componente della libreria. | Apri |