Около полугода назад задумал сделать программу для управления компьютером через браузер. Начал с простого односокетного 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 соединение для передачи бинарных данных
Автор: Rans