Körülbelül fél évvel ezelőtt gondoltam arra, hogy készítek egy programot, amellyel a számítógépet a böngészőn keresztül lehet irányítani. Egy egyszerű, egyszálú HTTP szerverrel kezdtem, amely képeket küldött a böngészőnek, és fogadta az egérkurzor koordinátáit az irányításhoz.
Egy bizonyos szakaszban rájöttem, hogy a WebRTC technológia jól megfelel ezeknek a céloknak. Ez a megoldás a Chrome böngészőben elérhető, bővítményként telepíthető. De szerettem volna egy könnyű programot készíteni, ami telepítés nélkül működik.
Először megpróbáltam használni a Google által biztosított könyvtárat, de a fordítás után 500 MB-ot foglalt el. Szinte az egész WebRTC verem megvalósítása nulláról történt, végül sikerült mindent akár 2,5 MB-os exe fájlba beletenni. Egy barátom segített a JS felülettel, így nézett ki a végeredmény.
Indítsuk el a programot:

Nyissunk meg egy linket a böngésző fülén, és teljes hozzáférést kapunk az asztalhoz:

Egy kis animáció a kapcsolat létrehozásának folyamatáról:

Támogatja a Chrome, Firefox, Safari, Opera böngészőket.
Lehetőség van hangátvitelre, audióhívásra, a vágólap kezelésére, fájlok átadására és billentyűparancsok meghívására.
A program fejlesztése közben körülbelül egy tucat RFC-t kellett tanulmányoznom, és rájöttem, hogy az interneten nem elegendő információ áll rendelkezésre a WebRTC protokoll működéséről. Szeretnék egy cikket írni az általa használt technológiákról, és kíváncsi vagyok, hogy az alábbi kérdések közül melyek érdeklik a közösséget:
- SDP protokoll az adatfolyamok leírására
- ICE jelöltek és a kapcsolat létrehozása két pont között, STUN és TURN a szerver
- DTLS kapcsolat és kulcsok továbbítása az RTP sessionben
- RTP és RTCP protokollok titkosítással a médiaadatok továbbítására
- H264, VP8 és Opus továbbítása RTP-n keresztül
- SCTP kapcsolat bináris adatok továbbítására
Forrás: habr.com
