Каля паўгода таму задумаў зрабіць праграму для кіравання кампутарам праз браўзэр. Пачаў з простага аднасокетнага HTTP сервера, які перадаваў карцінкі ў браўзэр і атрымліваў каардынаты курсора для кіравання.
На вызначанай стадыі зразумеў што для гэтых мэт добра падыходзіць тэхналогія WebRTC. Такое рашэнне ёсць у Chrome браўзэра, яно усталёўваецца праз пашырэнне. Але хацелася зрабіць малаважную праграму, якая будзе працаваць без усталёўкі.
Спачатку паспрабаваў выкарыстоўваць бібліятэку якую дае Google, але пасля кампіляцыі яна займае 500MB. Прыйшлося рэалізаваць увесь WebRTC стэк амаль з нуля, атрымалася ўсё змясціць у exe файл памерам 2.5MB. Сябар дапамог з інтэрфейсам на JS, вось што ў выніку атрымалася.
Запускаем праграму:
Адкрываем спасылку ва ўкладцы браўзэра і атрымліваем поўны доступ да працоўнага стала:
Невялікая анімацыя працэсу ўстаноўкі злучэння:
Падтрымліваецца Chrome, Firefox, Sаfari, Opera.
Ёсць магчымасць перадачы гуку, аўдыё званка, кіравання буферам абмену, перадачы файлаў і выкліку гарачых клавіш.
Падчас працы над праграмай прыйшлося вывучыць з дзясятак RFC і зразумець, што ў інтэрнэце мала інфармацыі пра працу WebRTC пратаколу. Жадаю напісаць артыкул па тэхналогіях якія ў ім выкарыстоўваюцца, жадаецца пазнаць якія пытанні з ніжэйпералічаных цікавяць супольнасць:
- SDP пратакол апісання струменевых дадзеных
- ICE кандыдаты і ўстаноўка злучэння паміж двума кропкамі, STUN і TURN сервера
- DTLS злучэнне і перадача ключоў у RTP сесію
- RTP і RTСP пратаколы з шыфраванням для перадачы медыя дадзеных
- Перадача H264, VP8 і Opus па RTP
- SCTP злучэнне для перадачы бінарных дадзеных
Крыніца: habr.com