Controllo remoto del computer tramite browser

Circa sei mesi fa ho deciso di creare un programma per controllare un computer tramite un browser. Ho iniziato con un semplice server HTTP a socket singolo che trasferiva le immagini al browser e riceveva le coordinate del cursore per il controllo.

Ad un certo punto mi sono reso conto che la tecnologia WebRTC è adatta a questi scopi. Il browser Chrome dispone di una soluzione del genere, che viene installata tramite un'estensione. Ma volevo creare un programma leggero che funzionasse senza installazione.

Per prima cosa ho provato ad utilizzare la libreria fornita da Google, ma dopo la compilazione occupa 500MB. Ho dovuto implementare l'intero stack WebRTC quasi da zero e sono riuscito a inserire tutto in un file exe da 2.5 MB. Un amico ci ha aiutato con l'interfaccia in JS e questo è ciò che abbiamo ottenuto.

Eseguiamo il programma:

Controllo remoto del computer tramite browser
Apri il collegamento in una scheda del browser e ottieni l'accesso completo al desktop:

Controllo remoto del computer tramite browser
Una breve animazione del processo di configurazione della connessione:

Controllo remoto del computer tramite browser
Supportato da Chrome, Firefox, Safari, Opera.

È possibile trasmettere suoni, chiamate audio, gestire gli appunti, trasferire file e richiamare tasti di scelta rapida.

Mentre lavoravo al programma, ho dovuto studiare una dozzina di RFC e capire che non ci sono abbastanza informazioni su Internet sul funzionamento del protocollo WebRTC. Voglio scrivere un articolo sulle tecnologie che vengono utilizzate in esso, vorrei scoprire quali delle seguenti domande interessano la comunità:

  • Protocollo di descrizione dei dati di streaming SDP
  • Candidati ICE e creazione di una connessione tra due punti, server STUN e TURN
  • Connessione DTLS e trasferimento delle chiavi alla sessione RTP
  • Protocolli RTP e RTСP con crittografia per la trasmissione di dati multimediali
  • Trasferisci H264, VP8 e Opus tramite RTP
  • Connessione SCTP per il trasferimento di dati binari

Fonte: habr.com

Aggiungi un commento