Fernsteuerung des Computers über einen Browser

Vor etwa sechs Monaten beschloss ich, ein Programm zur Steuerung eines Computers über einen Browser zu erstellen. Ich begann mit einem einfachen Single-Socket-HTTP-Server, der Bilder an den Browser übertrug und Cursorkoordinaten zur Steuerung empfing.

Irgendwann wurde mir klar, dass die WebRTC-Technologie für diese Zwecke gut geeignet ist. Der Chrome-Browser verfügt über eine solche Lösung; er wird über eine Erweiterung installiert. Aber ich wollte ein leichtes Programm erstellen, das ohne Installation funktioniert.

Zuerst habe ich versucht, die von Google bereitgestellte Bibliothek zu verwenden, aber nach der Kompilierung belegt sie 500 MB. Ich musste den gesamten WebRTC-Stack fast von Grund auf implementieren und schaffte es, alles in eine 2.5 MB große Exe-Datei zu packen. Ein Freund hat bei der Schnittstelle in JS geholfen, und das ist es, was wir letztendlich herausgefunden haben.

Lassen Sie uns das Programm ausführen:

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

Fernsteuerung des Computers über einen Browser
Eine kurze Animation des Verbindungsaufbauvorgangs:

Fernsteuerung des Computers über einen Browser
Unterstützt von Chrome, Firefox, Safari, Opera.

Es ist möglich, Ton und Audioanrufe zu übertragen, die Zwischenablage zu verwalten, Dateien zu übertragen und Hotkeys anzurufen.

Während ich an dem Programm arbeitete, 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 darin verwendeten Technologien schreiben und möchte herausfinden, welche der folgenden Fragen für die Community von Interesse sind:

  • SDP-Streaming-Datenbeschreibungsprotokoll
  • ICE-Kandidaten und Herstellen einer Verbindung zwischen zwei Punkten, STUN- und TURN-Servern
  • DTLS-Verbindung und Übertragung von Schlüsseln zur RTP-Sitzung
  • RTP- und RTСP-Protokolle mit Verschlüsselung zur Übertragung von Mediendaten
  • Übertragen Sie H264, VP8 und Opus über RTP
  • SCTP-Verbindung zur Übertragung von Binärdaten

Source: habr.com

Kommentar hinzufügen