Technologie
Donc, à un niveau de base, lorsque vous vous connectez, il télécharge la page Web via HTTPS, le site et le serveur établissent ensuite une connexion WebSockets, puis le site et le serveur utilisent un serveur STUN externe pour négocier une connexion WebRTC. Le site établit alors un canal de données peu fiable à l'aide de WebRTC et envoie un paquet de paquets au serveur, qui les enregistre et les renvoie ensuite immédiatement. Le client enregistre ensuite les temps de ping et ceux qu'il a récupérés. Le serveur envoie également un journal sur les WebSockets dont les paquets sont composés, de façon à ce que vous puissiez distinguer les paquets perdus lors du téléchargement des paquets perdus lors du téléchargement.
Services utilisés
Donc, en ce qui concerne les technologies et services spécifiques utilisés :
- Le certificat SSL est fourni par Let's Encrypt.
- Le site web statique HTTPS est hébergé sur Netlify qui tire de GitHub.
- Le serveur WebSocket et WebRTC est hébergé chez Linode.
- Ce serveur WebSocket et WebRTC exécute Node.js comme logiciel serveur.
- Node.js exécute uWebSockets.js, qui à son tour exécute uWebSockets (Qui, étant C++, est beaucoup plus rapide que JavaScript pourrait jamais l'être.)
- Le serveur utilise ensuite wrtc pour implémenter WebRTC dans Node.js. (Puisqu'il ne met pas cela en œuvre. WebRTC n'est pas en fait JavaScript, mais juste une API JavaScript dans WebIDL.)
- J'utilise le serveur STUN public gratuit de Google (stun.l.google.com:19302) pour établir la connexion ICE
- Chart.js affiche le diagramme à barres au bas des résultats.
- Tout n'est fondamentalement que du HTML, du CSS, du JS et du Bash codés manuellement. J'utilise Mustache (en JavaScript) côté serveur pour template les pages afin qu'elles soient plus faciles à traduire (avec les vues) et pour changer les parties communes (avec les partielles).
- Aussi, pour la traduction, j'ai largement (mais pas entièrement !) utilisé Google Translate. >.>
De plus, DeepL et Linguee aides incroyables que je recommande entièrement.