Преди около половин година реших да направя програма за управление на компютър чрез браузер. Започнах с прост еднопортов 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
