Há cerca de seis meses decidi fazer um programa para controlar um computador através de um navegador. Comecei com um servidor HTTP simples de soquete único que transferia imagens para o navegador e recebia coordenadas do cursor para controle.
A certa altura percebi que a tecnologia WebRTC é adequada para estes fins. O navegador Chrome tem essa solução: ela é instalada por meio de uma extensão. Mas eu queria fazer um programa leve que funcionasse sem instalação.
Primeiro tentei usar a biblioteca fornecida pelo Google, mas após a compilação ela ocupa 500 MB. Tive que implementar toda a pilha WebRTC quase do zero e consegui encaixar tudo em um arquivo exe de 2.5 MB. Um amigo ajudou com a interface em JS, e foi isso que conseguimos.
Vamos executar o programa:
Abra o link em uma aba do navegador e tenha acesso total ao desktop:
Uma breve animação do processo de configuração da conexão:
Compatível com Chrome, Firefox, Safari, Opera.
É possível transmitir som, fazer chamadas de áudio, gerenciar a área de transferência, transferir arquivos e chamar teclas de atalho.
Enquanto trabalhava no programa, tive que estudar uma dezena de RFCs e entender que não há informações suficientes na Internet sobre o funcionamento do protocolo WebRTC. Quero escrever um artigo sobre as tecnologias que nele são utilizadas, gostaria de saber quais das seguintes questões interessam à comunidade:
- Protocolo de descrição de dados de streaming SDP
- Candidatos ICE e estabelecimento de conexão entre dois pontos, servidores STUN e TURN
- Conexão DTLS e transferência de chaves para sessão RTP
- Protocolos RTP e RTСP com criptografia para transmissão de dados de mídia
- Transferir H264, VP8 e Opus via RTP
- Conexão SCTP para transferência de dados binários
Fonte: habr.com