Packet Loss Test

Technologie

Wenn Sie eine Verbindung herstellen, wird die Webseite über HTTPS heruntergeladen, die Site und der Server stellen dann eine WebSockets-Verbindung her, und die Site und der Server verwenden einen externen STUN-Server, um eine WebRTC-Verbindung auszuhandeln. Die Site richtet dann mithilfe von WebRTC einen unzuverlässigen Datenkanal ein und sendet eine Reihe von Paketen an den Server, der sie aufzeichnet und dann direkt zurücksendet. Der Client zeichnet dann die Ping-Zeiten und die zurückgegebenen Pakete auf. Der Server sendet auch ein Protokoll über WebSockets aus welchen Paketen es sich zusammensetzt, so dass Sie feststellen können, welche Pakete beim Hochladen verloren gegangen sind, abgesehen von Paketen, die beim Herunterladen verloren gegangen sind.

Verwendete Dienste

Also, was die spezifischen Technologien und Dienstleistungen betrifft, die verwendet werden:

  • Das SSL-Zertifikat wird von Let's Encrypt bereitgestellt.
  • Die statische HTTPS-Website wird auf Netlify gehostet, das von GitHub zieht.
  • Der WebSocket- und WebRTC-Server wird bei Linode gehostet.
  • Auf diesem WebSocket- und WebRTC-Server läuft Node.js als Server-Software.
  • Node.js führt uWebSockets.js aus, das wiederum uWebSockets ausführt (welches in C++ geschrieben ist und daher um einiges schneller als JavaScript je sein wird)
  • Der Server verwendet dann wrtc , um WebRTC in Node.js zu implementieren. (Da setzt es das nicht um. WebRTC ist eigentlich kein JavaScript, sondern nur eine JavaScript-API in WebIDL.)
  • Ich verwende den kostenlosen öffentlichen STUN-Server von Google (stun.l.google.com:19302), um die ICE-Verbindung herzustellen.
  • Chart.js rendert das Balkendiagramm am unteren Rand der Ergebnisse.
  • Alles ist im Grunde nur manuell codiertes HTML, CSS, JS und Bash. Ich benutze Mustache (in JavaScript) auf der Serverseite, um die Seiten so zu schablonieren, dass sie einfacher zu übersetzen sind (mit Ansichten) und die allgemeinen Teile (mit Partials) zu ändern.
  • Auch für die Übersetzung habe ich weitgehend (Aber nicht ganz!) Google Translate verwendet. >.>
    Auch DeepL und Linguee waren erstaunliche Hilfe, die ich uneingeschränkt empfehle. Schließlich hat Michael Ebenhofer meine Übersetzungen hilfreich überprüft und korrigiert!