Дистанційне керування комп'ютером через браузер

Близько півроку тому задумав створити програму для керування комп'ютером через браузер. Почав із простого односокетного 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

Додати коментар або відгук