Približne pred pol rokom som sa rozhodol vyvinúť program na ovládanie počítača cez prehliadač. Začal som s jednoduchým jednosocketovým HTTP serverom, ktorý posielal obrázky do prehliadača a prijímal súradnice kurzora na ovládanie.
Na určitej fáze som si uvedomil, že na tieto účely dobre vyhovuje technológia WebRTC. Takéto riešenie má prehliadač Chrome, inštaluje sa cez rozšírenie. Ale chcel som vytvoriť ľahký program, ktorý bude fungovať bez inštalácie.
Najprv som sa pokúsil použiť knižnicu, ktorú poskytuje Google, ale po kompilácii zaberala 500 MB. Musel som realizovať celý WebRTC stack takmer od nuly, podarilo sa mi všetko zmestiť do exe súboru s veľkosťou 2,5 MB. Môj kamoš pomohol s rozhraním na JS, tu je to, čo nakoniec vzniklo.
Spúšťame program:

Otvoríme odkaz na karte prehliadača a získame plný prístup k pracovnej ploche:

Malá animácia procesu nadväzovania spojenia:

Podporuje sa Chrome, Firefox, Safari, Opera.
Existuje možnosť prenosu zvuku, audio hovoru, ovládania schránky, prenosu súborov a vyvolávania klávesových skratiek.
Pri práci na programe som musel študovať desiatky RFC a pochopiť, že na internete nie je dostatok informácií o fungovaní WebRTC protokolu. Chcem napísať článok o technológiách, ktoré sa v ňom používajú, a rád by som vedel, aké otázky z uvedených zaujímajú komunitu:
- SDP protokol na popis prúdových dát
- ICE kandidáti a nadväzovanie spojenia medzi dvoma bodmi, STUN a TURN servera
- DTLS spojenie a prenos kľúčov do RTP relácie
- RTP a RTCP protokoly s šifrovaním na prenos mediálnych dát
- Prenos H264, VP8 a Opus cez RTP
- SCTP spojenie na prenos binárnych dát
Zdroj: habr.com
