Około pół roku temu pomyślałem o stworzeniu programu do zarządzania komputerem przez przeglądarkę. Zacząłem od prostego jednogniazdowego serwera HTTP, który przesyłał obrazy do przeglądarki i odbierał współrzędne kursora do zarządzania.
Na pewnym etapie zrozumiałem, że do tych celów dobrze nadaje się technologia WebRTC. Takie rozwiązanie istnieje w przeglądarce Chrome, instalowane jest za pomocą rozszerzenia. Chciałem jednak stworzyć lekką aplikację, która działałaby bez instalacji.
Najpierw spróbowałem użyć biblioteki, którą dostarcza Google, ale po kompilacji zajmowała ona 500 MB. Musiałem prawie od podstaw zrealizować cały stos WebRTC, udało się wszystko zmieścić w pliku exe o rozmiarze 2,5 MB. Przyszedł mi z pomocą przy interfejsie w JS, oto co ostatecznie uzyskaliśmy.
Uruchamiamy program:

Otwieramy link w zakładce przeglądarki i zyskujemy pełny dostęp do pulpitu:

Mała animacja procesu nawiązywania połączenia:

Obsługiwane są przeglądarki Chrome, Firefox, Safari, Opera.
Istnieje możliwość przesyłania dźwięku, połączeń audio, zarządzania schowkiem, przesyłania plików oraz wywoływania skrótów klawiszowych.
W trakcie pracy nad programem musiałem zapoznać się z dziesiątkami RFC i zrozumieć, że w Internecie brakuje informacji na temat działania protokołu WebRTC. Chcę napisać artykuł na temat technologii, które w nim wykorzystywane, chciałbym wiedzieć, jakie pytania z poniższego spisu interesują społeczność:
- Protokół SDP opisu strumieni danych
- ICE kandydaci i nawiązywanie połączenia między dwoma punktami, STUN i TURN serwera
- Połączenie DTLS i przesyłanie kluczy do sesji RTP
- Protokóły RTP i RTCP z szyfrowaniem do przesyłania danych multimedialnych
- Przesyłanie H264, VP8 i Opus przez RTP
- Połączenie SCTP do przesyłania danych binarnych
Źródło: habr.com
