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.