Packet Loss Test

Technologia

Entonces, a nivel básico, cuando se conecta, descarga la página web a través de HTTPS, el sitio y el servidor establecen una conexión WebSockets, y luego el sitio y el servidor utilizan un servidor STUN externo para negociar una conexión WebRTC . Luego, el sitio establece un canal de datos no confiable mediante WebRTC y envía una gran cantidad de paquetes al servidor, que los registra y luego los envía de vuelta. El cliente luego registra los tiempos de ping y cuáles regresó. El servidor también envía un registro a través de WebSockets de los paquetes que lo compusieron, para que pueda distinguir los paquetes perdidos durante la carga de los perdidos durante la descarga.

Servicios utilizados

Entonces, en cuanto a las tecnologías y servicios específicos utilizados:

  • El certificado SSL es proporcionado por Let's Encrypt.
  • El sitio web estático de HTTPS está alojado en Netlify, que saca de GitHub.
  • El servidor de WebSocket y WebRTC está alojado en Linode.
  • El servidor de WebSocket y WebRTC ejecuta Node.js como el software del servidor.
  • Node.js ejecuta uWebSockets.js, que a su vez ejecuta uWebSockets (Que, al ser C++, es mucho más rápido de lo que podría ser JavaScript.)
  • El servidor entonces usa wrtc para implementar WebRTC en Node.js. (Ya que no se implementa eso. WebRTC no es en realidad JavaScript, sino solo una API de JavaScript en WebIDL.)
  • Uso el servidor STUN público gratuito de Google (stun.l.google.com:19302) para hacer la conexión ICE.
  • Chart.js renderiza el gráfico de barras en la parte inferior de los resultados.
  • Básicamente, todo es simplemente HTML, CSS, JS y Bash codificados manualmente. Utilizo Mustache (en JavaScript) lado del servidor para formar las páginas con plantillas que sean más fáciles de traducir (con vistas) y para cambiar las partes comunes (con parciales).
  • Además, para la traducción, en gran parte (¡Pero no del todo!) usé Google Translate. >.>
    También, DeepL y Linguee fueron ayudas increíbles que recomiendo totalmente.