Tecnologia
Então, em um nível básico, quando você se conecta, ele baixa a página web sobre HTTPS, o site e o servidor estabelecem uma conexão WebSockets, e então o site e o servidor usam um servidor STUN externo para negociar uma conexão WebRTC. O site então estabelece um canal de dados não confiável usando WebRTC e envia um monte de pacotes para o servidor, que os registra e depois os envia de volta. O cliente então grava os tempos de ping e quais eles retornaram. O servidor também envia um log sobre WebSockets dos quais os pacotes o compõem, para que você possa contar os pacotes perdidos ao fazer o upload além dos pacotes perdidos durante o download.
Serviços Usados
Assim, quanto às tecnologias e serviços específicos utilizados:
- O certificado SSL é fornecido pela Let's Encrypt.
- O site estático HTTPS é hospedado na Netlify, que puxa do GitHub.
- O servidor WebSocket e WebRTC é hospedado com Linode.
- Este servidor WebSocket e WebRTC roda Node.js como o software servidor.
- Node.js executa uWebSockets.js, que por sua vez executa uWebSockets (Que, sendo C++, é muito mais rápido do que o JavaScript poderia ser.)
- O servidor então usa wrtc para implementar WebRTC em Node.js. (Uma vez que ele não implementa isso. WebRTC não é realmente JavaScript, mas apenas uma API JavaScript no WebIDL.)
- Eu uso o servidor STUN público gratuito do Google (stun.l.google.com:19302) para fazer a conexão ICE
- Chart.js renderiza o gráfico de barras na parte inferior dos resultados.
- Tudo é basicamente apenas HTML, CSS, JS e Bash codificados manualmente. Eu uso Mustache (em JavaScript) server-side para modelar as páginas para que elas sejam mais fáceis de traduzir (com views) e alterar as partes comuns (com partials).
- Além disso, para a tradução, eu em grande parte (mas não inteiramente!) usado o Google Translate. >.>
Além disso, DeepL e Linguee foram incríveis ajudas que eu recomendo totalmente.