Выдаленае кіраванне кампутарам праз браўзэр

Каля паўгода таму задумаў зрабіць праграму для кіравання кампутарам праз браўзэр. Пачаў з простага аднасокетнага 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

Дадаць каментар