Packet Loss Test

Tecnologie

In pratica, a livello di base, quando ci si connette, viene scaricata la pagina Web su HTTPS, il sito e il server quindi stabiliscono una connessione WebSockets, poi il sito e il server utilizzano un server STUN esterno per negoziare una connessione WebRTC. Il sito stabilisce quindi un canale dati inaffidabile utilizzando WebRTC e invia un gruppo di pacchetti al server, che li registra e li rimanda indietro. Il client registra quindi i tempi di ping e quali sono tornati. Il server invia anche un log sui WebSocket di cui sono composti i pacchetti, in modo da poter distinguere i pacchetti persi durante il caricamento, e i pacchetti persi durante il download.

Servizi usati

Ecco le tecnologie e i servizi specifici utilizzati:

  • Il certificato SSL è fornito da Let's Encrypt.
  • Il sito web statico HTTPS è ospitato su Netlify, che lo estrae da GitHub.
  • Il server WebSocket e WebRTC è ospitato con Linode.
  • Questo server WebSocket e WebRTC esegue Node.js come software del server.
  • Node.js esegue uWebSockets.js, che a sua volta esegue uWebSockets (Che, essendo scritto in C++, è molto più veloce di quanto potrebbe mai essere JavaScript.)
  • Il server utilizza quindi wrtc per implementare WebRTC in Node.js. (Perché non lo implementa. WebRTC non è in realtà JavaScript, ma solo un'API JavaScript in WebIDL.)
  • Uso il server pubblico gratuito di STUN di Google (stun.l.google.com:19302) per creare la connessione ICE.
  • Chart.js esegue il rendering del grafico a barre nella parte inferiore dei risultati.
  • Tutto il resto è fondamentalmente solo HTML, CSS, JS e Bash codificati manualmente. Uso Mustache ( in JavaScript ) sul server per modellare le pagine in modo che siano più facili da tradurre (con viste) e per modificare le parti comuni (anche parzialmente).
  • Inoltre, per la traduzione, in gran parte (Ma non del tutto!) ho usato ampiamente Google Translate. >.>
    Inoltre, DeepL e Linguee sono stati incredibili degli incrediili aiuti che consiglio vivamente.