Circa sei mesi fa, ho pensato di creare un programma per controllare il computer tramite browser. Ho iniziato con un semplice server HTTP a singolo socket, che trasmetteva immagini nel browser e riceveva le coordinate del cursore per il controllo.
A un certo punto ho capito che per questi scopi era adatta la tecnologia WebRTC. Questa soluzione è presente nel browser Chrome, e si installa tramite un'estensione. Ma volevo realizzare un programma leggero che funzionasse senza installazioni.
Inizialmente ho provato a utilizzare la libreria fornita da Google, ma dopo la compilazione occupava 500MB. Ho dovuto implementare quasi da zero l'intero stack WebRTC, riuscendo a racchiudere tutto in un file exe di 2.5MB. 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 breve animazione del processo di connessione:

Supporta Chrome, Firefox, Safari, Opera.
C'è la possibilità di trasmettere audio, videochiamate, gestire il clipboard, trasferire file e invocare tasti di scelta rapida.
Durante lo sviluppo del programma ho dovuto studiare una decina di RFC e rendermi conto che non c'è abbastanza informazione su come funziona il protocollo WebRTC. Vorrei scrivere un articolo sulle tecnologie utilizzate, e mi piacerebbe sapere quali domande della lista qui sotto interessano alla comunità:
- Protocollo SDP per la descrizione dei flussi dati
- Candidati ICE e stabilizzazione della connessione tra due punti, STUN e TURN server
- Connessione DTLS e trasmissione delle chiavi nella sessione RTP
- Protocolli RTP e RTCP con crittografia per la trasmissione di dati multimediali
- Trasmissione di H264, VP8 e Opus via RTP
- Connessione SCTP per la trasmissione di dati binari
Fonte: habr.com
