Controle remoto do computador via navegador

Cerca de seis meses atrás, decidi criar 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 as coordenadas do cursor para controle.

Em um certo estágio, percebi que a tecnologia WebRTC é adequada para esses fins. O navegador Chrome tem uma solução, é instalada através da extensão. Mas eu queria criar um programa leve que funcionasse sem instalação.

No começo, tentei usar a biblioteca fornecida pelo Google, mas após a compilação são necessários 500 MB. Eu tive que implementar toda a pilha WebRTC quase do zero, consegui encaixar tudo em um arquivo exe com 2,5 MB de tamanho. Um amigo ajudou na interface JS, foi o que acabou.

Execute o programa:

imagem

Abrimos o link na guia do navegador e obtemos acesso total à área de trabalho:


Uma pequena animação do processo de configuração da conexão:


Suportado pelo Chrome, Firefox, Safari, Opera.

Existe a possibilidade de transmitir som, chamada de áudio, gerenciamento de área de transferência, transferência de arquivos e teclas de atalho.

No decorrer do trabalho no programa, tive que estudar cerca de uma dúzia de RFCs e entender que a Internet não possui informações suficientes sobre a operação do protocolo WebRTC. Quero escrever um artigo sobre as tecnologias usadas nele, quero saber quais problemas dos seguintes assuntos interessam à comunidade:

  • Protocolo de descrição de streaming SDP
  • Candidatos ICE e estabelecendo uma conexão entre dois pontos, servidor STUN e TURN
  • Conexão DTLS e transferência de chave para a sessão RTP
  • Protocolos RTP e RTCP com criptografia para transmissão de mídia
  • Transferir H264, VP8 e Opus sobre RTP
  • Conexão de dados binários SCTP

Source: https://habr.com/ru/post/pt470005/


All Articles