Fernsteuerung des Computers über den Browser

Vor etwa einem halben Jahr hatte ich die Idee, ein Programm zur Steuerung des Computers über den Browser zu entwickeln. Ich begann mit einem einfachen, einportigen HTTP-Server, der Bilder an den Browser übertrug und die Mauskoordinaten zur Steuerung erhielt.

In einem bestimmten Stadium wurde mir klar, dass die WebRTC-Technologie sich gut für diese Zwecke eignet. Eine solche Lösung gibt es im Chrome-Browser, die über eine Erweiterung installiert wird. Ich wollte jedoch ein leichtes Programm erstellen, das ohne Installation funktioniert.

Zunächst versuchte ich, die von Google bereitgestellte Bibliothek zu verwenden, aber nach der Kompilierung nahm sie 500 MB ein. Ich musste den gesamten WebRTC-Stack fast von Grund auf neu umsetzen und schaffte es, alles in eine EXE-Datei von 2,5 MB zu packen. Ein Freund half mir mit der Benutzeroberfläche in JS, das ist das Ergebnis.

Wir starten das Programm:

Fernsteuerung des Computers über den Browser
Wir öffnen den Link in einem Browser-Tab und erhalten vollen Zugriff auf den Desktop:

Fernsteuerung des Computers über den Browser
Eine kleine Animation des Verbindungsaufbaus:

Fernsteuerung des Computers über den Browser
Unterstützt werden Chrome, Firefox, Safari und Opera.

Es besteht die Möglichkeit, Audio zu übertragen, Sprachübertragungen durchzuführen, die Zwischenablage zu steuern, Dateien zu übertragen und Hotkeys aufzurufen.

Während der Arbeit an dem Programm musste ich ein Dutzend RFCs studieren und feststellen, dass es im Internet nicht genügend Informationen über die Funktionsweise des WebRTC-Protokolls gibt. Ich möchte einen Artikel über die Technologien schreiben, die darin verwendet werden, und möchte wissen, welche Fragen aus den folgenden Punkten die Community interessieren:

  • SDP-Protokoll zur Beschreibung von Mediastreams
  • ICE-Kandidaten und die Herstellung einer Verbindung zwischen zwei Punkten, STUN und TURN Server
  • DTLS-Verbindung und Übertragung von Schlüsseln an die RTP-Sitzung
  • RTP- und RTCP-Protokolle mit Verschlüsselung für die Übertragung von Mediendaten
  • Übertragung von H264, VP8 und Opus über RTP
  • SCTP-Verbindung zur Übertragung von Binärdaten

Quelle: habr.com

60GB SSD 8Gb DDR4