Il y a environ six mois, j'ai pensé développer un programme pour contrôler un ordinateur via un navigateur. J'ai commencé par un simple serveur HTTP à socket unique, qui transmet des images au navigateur et reçoit les coordonnées du curseur pour le contrôle.
À un certain stade, j'ai réalisé que la technologie WebRTC convenait bien à ces objectifs. Cette solution est présente dans le navigateur Chrome, installée via une extension. Cependant, je voulais créer un programme léger qui fonctionnerait sans installation.
J'ai d'abord essayé d'utiliser la bibliothèque fournie par Google, mais après compilation, elle prenait 500 Mo. J'ai donc dû implémenter l'ensemble de la pile WebRTC presque à partir de zéro, parvenant à tout intégrer dans un fichier exe de 2,5 Mo. Un ami m'a aidé avec l'interface en JS, voilà ce que cela donne finalement.
Lançons le programme :

Ouvrez le lien dans un onglet de navigateur et obtenez un accès complet au bureau :

Une petite animation du processus d'établissement de la connexion :

Compatible avec Chrome, Firefox, Safari, Opera.
Il est possible de transmettre le son, de passer des appels audio, de gérer le presse-papiers, de transférer des fichiers et d'appeler des raccourcis clavier.
Au cours du développement du programme, j'ai dû étudier une dizaine de RFC et comprendre qu'il n'y avait pas assez d'informations sur le fonctionnement du protocole WebRTC sur Internet. Je souhaite écrire un article sur les technologies utilisées, et j'aimerais savoir quelles questions parmi celles-ci intéressent la communauté :
- Protocole SDP pour la description des flux de données
- Candidats ICE et établissement de la connexion entre deux points, STUN et TURN de serveurs
- Connexion DTLS et transmission des clés dans la session RTP
- Protocoles RTP et RTCP avec chiffrement pour la transmission de données multimédias
- Transmission H264, VP8 et Opus par RTP
- Connexion SCTP pour la transmission de données binaires
Source : habr.com
