Преди около половин година реших да създам програма за управление на компютър чрез браузер. Започнах с прост еднопортов HTTP сървър, който предаваше изображения в браузера и получаваше координатите на курсора за управление.
На определен етап разбрах, че технологията WebRTC е подходяща за тези цели. Такова решение вече съществува в браузера Chrome и се инсталира чрез разширение. Но ми се искаше да направя лека програма, която да работи без инсталиране.
Първоначално опитах да използвам библиотеката, предоставена от Google, но след компилация тя зае 500MB. Приказно се наложи да реализирам целия WebRTC стек почти от нулата, успях всичко да го побера в exe файл с размер 2.5MB. Един приятел ми помогна с интерфейса на JS, ето какво създадохме в крайна сметка.
Стартираме програмата:

Отваряме линка в браузера и получаваме пълен достъп до работния плот:

Небольшо анимационно видео на процеса на установяване на връзка:

Поддържа се от Chrome, Firefox, Safari, Opera.
Има възможност за предаване на звук, аудиозвънец, управление на буфера за обмен, прехвърляне на файлове и извикване на горещи клавиши.
В хода на работата по програмата ми се наложи да изуча десетина RFC и да разбера, че в интернет няма достатъчно информация за работата на WebRTC протокола. Искам да напиша статия за технологиите, които се използват в него, и искам да разбера какви въпроси от изброените интересуват общността:
- SDP протокол за описание на поточни данни
- ICE кандидати и установяване на връзка между две точки, STUN и TURN сървър
- DTLS връзка и предаване на ключове в RTP сесия
- RTP и RTCP протоколи за шифроване на медийни данни
- Предаване на H264, VP8 и Opus по RTP
- SCTP връзка за предаване на бинарни данни
Източник: habr.com
