About six months ago, I thought about creating a program for managing a computer through the browser. I started with a simple single-socket HTTP server that transmitted images to the browser and received cursor coordinates for control.
At a certain stage, I realized that the WebRTC technology is well-suited for this purpose. This solution is available in the Chrome browser and is installed via an extension. However, I wanted to create a lightweight program that would work without installation.
Initially, I tried to use the library provided by Google, but after compilation, it took up 500MB. I had to implement the entire WebRTC stack almost from scratch, managing to fit everything into an exe file of 2.5MB. A friend helped with the JS interface, and this is what we ended up with.
We launch the program:

We open the link in a browser tab and gain full access to the desktop:

A small animation of the connection setup process:

Supported on Chrome, Firefox, Safari, and Opera.
There is the ability to transmit audio, audio calls, clipboard management, file transfer, and hotkey invocation.
While working on the program, I had to study a dozen RFCs and understand that there is insufficient information on how the WebRTC protocol works. I want to write an article about the technologies used in it and would like to know which of the following questions interest the community:
- SDP protocol for describing data streams
- ICE candidates and establishing a connection between two points, STUN and TURN server
- DTLS connection and key transmission in the RTP session
- RTP and RTCP protocols with encryption for transmitting media data
- Transmission of H264, VP8, and Opus over RTP
- SCTP connection for transmitting binary data
Source: habr.com
