För ungefÀr ett halvÄr sedan fick jag idén att skapa ett program för att styra datorn via webblÀsaren. Jag började med en enkel en-sockets HTTP-server som skickade bilder till webblÀsaren och tog emot muskoordinater för styrning.
Vid en viss punkt insÄg jag att WebRTC-teknologin passar bra för dessa ÀndamÄl. Denna lösning finns i Chrome-webblÀsaren och installeras via ett tillÀgg. Men jag ville skapa ett lÀttviktigt program som skulle fungera utan installation.
Inledningsvis försökte jag anvÀnda det bibliotek som Google erbjuder, men efter kompileringen tog det upp 500 MB. Jag fick göra hela WebRTC-stacken nÀstan frÄn grunden och lyckades fÄ ner allt till en exe-fil pÄ storleken 2.5 MB. En vÀn hjÀlpte till med grÀnssnittet pÄ JS, och hÀr Àr resultatet.
Vi startar programmet:

Ăppna lĂ€nken i en webblĂ€sartab och fĂ„ fullstĂ€ndig Ă„tkomst till skrivbordet:

En liten animation av processen för att upprÀtta anslutning:

Chrome, Firefox, Safari, och Opera stöds.
Det finns möjlighet att överföra ljud, ljudsamtal, hantera urklipp, överföra filer och anropa snabbknappar.
Under arbetet med programmet var jag tvungen att studera ett dussin RFC och förstÄ att det inte finns tillrÀckligt med information pÄ nÀtet om hur WebRTC-protokollet fungerar. Jag vill skriva en artikel om teknologierna som anvÀnds i det, och jag vill veta vilka frÄgor frÄn de nedan som intresserar gemenskapen:
- SDP-protokollet för beskrivning av strömmande data
- ICE-kandidater och upprÀttandet av anslutning mellan tvÄ punkter, STUN och TURN servern
- DTLS-anslutning och nyckelöverföring i RTP-sessionen
- RTP och RTХP-protokoll med kryptering för överföring av mediadata
- Ăverföring av H264, VP8 och Opus via RTP
- SCTP-anslutning för överföring av binÀra data
KĂ€lla: habr.com
