Circa sei mesi fa ho deciso di creare un programma per controllare il computer tramite il browser. Ho iniziato con un semplice server HTTP a un socket, che trasmetteva immagini nel browser e riceveva le coordinate del cursore per il controllo.
In una certa fase mi sono reso conto che la tecnologia WebRTC si adattava bene a queste esigenze. Questa soluzione è presente nel browser Chrome e si installa tramite un'estensione. Volevo però realizzare un programma leggero che funzionasse senza installazione.
Inizialmente ho provato a utilizzare la libreria fornita da Google, ma dopo la compilazione occupava 500 MB. Ho dovuto implementare quasi tutto lo stack WebRTC da zero, riuscendo a racchiudere tutto in un file exe di 2,5 MB. Un amico mi ha aiutato con l'interfaccia in JS, ecco cosa è venuto fuori.
Avviamo il programma:

Apriamo il link in una scheda del browser e otteniamo accesso completo al desktop:

Una piccola animazione del processo di connessione:

Supporta Chrome, Firefox, Safari, Opera.
È possibile trasmettere l'audio, effettuare chiamate audio, gestire il copia e incolla, trasferire file e richiamare scorciatoie da tastiera.
Durante il lavoro sul programma, ho dovuto esaminare una dozzina di RFC e capire che online non ci sono sufficienti informazioni sul funzionamento del protocollo WebRTC. Vorrei scrivere un articolo sulle tecnologie che utilizza e sono curioso di sapere quali delle seguenti domande interessano la comunità:
- Protocollo SDP per la descrizione dei flussi di dati
- Candidate ICE e installazione della connessione tra due punti, STUN e TURN server
- Connessione DTLS e trasmissione delle chiavi nella sessione RTP
- Protocollo RTP e RTCP con crittografia per la trasmissione di dati multimediali
- Trasmissione di H264, VP8 e Opus su RTP
- Connessione SCTP per la trasmissione di dati binari
Fonte: habr.com
