Packet Loss Test

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.