SpeedtestJS
Speed-testJS ist ein JavaScript-basierter Geschwindigkeitstest, der Benutzern einen erweiterten Überblick über ihre Internetgeschwindigkeit bietet. Bietet Benutzern nicht nur Latenz, Upload- und Download-Geschwindigkeit und Kontext für ihr gesamtes Interneterlebnis. Durch die Verwendung von Geschwindigkeitsstufendaten zum Hinzufügen einer qualifizierenden Metrik zu Standard-Geschwindigkeitstestergebnissen wissen Benutzer nun, ob ihre Erfahrung schlecht, gut oder großartig ist
Einsatz
Informationen zur Bereitstellung auf einem Testserver finden Sie in der README-Datei im Ansible -Ordner.
Client-Server-Setup
Die Anwendung besteht aus einer Node-/Express-Software, auf der der Server läuft, und einfachem Javascript/HTML auf dem Client. Der Server betreibt Reset-Endpunkte, WebSocket-Kommunikation, Datenbankinteraktionen und die Client-Website.
Server
Index.js ist der Ausgangspunkt der App und enthält die notwendigen Funktionen zum Ausführen der Anwendung. Wesentliche Einstellungen in dieser Datei sind:
IP-Adresse und Ports: Der Server bindet automatisch an die IPv4- und IPv6-Adressen des Hostcomputers, auf dem er bereitgestellt wird (z. B. app.listen(SERVERPORT,'::');). Zusätzliche Ports können mit app.listen(ADDITIONALPORT) zugewiesen werden;
HTTP-Anfrage: Die HTTP-Konfiguration ist so definiert, dass HTTP-Posts und domänenübergreifende Anfragen möglich sind.
WebSockets: WebSockets-Kommunikation ist definiert
REST-Endpunkte: Rest-Endpunkte werden einem Geschwindigkeitstest unterzogen und umfassen Folgendes:
- Testplan: Testplan gibt JSON-Daten zurück, die die IPv4- und IPv6-IP-Adressen und Ports enthalten, die für restliche Endpunkte und Websockets verwendet werden, die auf dem Server und der Client-IP-Adresse ausgeführt werden. Auch zusätzliche Geschwindigkeitstestfunktionen (z. B. latenzbasierte Routing-Flags können zurückgegeben werden)
- Latenz: Gibt eine einfache Pong-Nachricht zurück
- Download: Binärdaten auf Anfrage
- Upload: akzeptiert Beiträge zum Hochladen
- downloadProbe: Gibt die empfohlene Download-Bandbreiten-Testgröße basierend auf der Anfrage zurück
- Rechner: Gibt Berechnungen basierend auf dem Anforderungsarray zurück und liefert Statistiken zum Datum.
- testServer: wird bei latenzbasiertem Routing verwendet. Es werden Testserver-URLs zurückgegeben, die zum Auffinden des Closet-Servers an einen Client verwendet werden können
Konfiguration: Generische Konfigurationen (Ports, latencyBasedRouting,...) werden in index.js festgelegt. Spezifische Anpassungen (z. B. Datenbank) können im Konfigurationsordner abgelegt werden
- Konfigurationsparameter
- Rest-Endpunkte
- WebSockets
- Der Ordner „Module“ enthält benutzerdefinierte Module, die für die Anwendung verwendet werden.
Kunde
Client: Die Clientanwendung befindet sich im öffentlichen Ordner und besteht aus einfachem Javascript. Index.html ist die Standardstartseite der Anwendung und enthält ein End-to-End-Beispiel für einen Bandbreitengeschwindigkeitstest. Im Folgenden wird die Ordnerstruktur der Clientanwendung beschrieben:
- lib: Der lib-Ordner enthält Javascript-Dateien, die zum Messen der Bandbreite und zugehöriger Messungen verwendet werden.
- Beispiel: Der Beispielordner enthält HTML-Dateien, die zum Testen der Messung verwendet werden. Javascript-Dateien im lib-Ordner
- Basis-xmlhttprequest- und Websocket-Objekte
- Verschiedene Testsuiten mit den Basisobjekten Base xmlhttprequest und websocket
- test: Der Testordner enthält Unit-Tests
- uilib: Javascript-Dateien speziell für die Benutzeroberfläche.
- img: Bilder zum Testen oder für die Benutzeroberfläche
Manuelle Bereitstellung
Grunt wird verwendet, um die benötigten Dateien und Ordner zu packen, um die Anwendung auf einem Server bereitzustellen, um die Anwendung auszuführen. Die Schritte sind unten aufgeführt:
- Führen Sie das Grunt-Paket aus dem Stammordner aus
- tar, komprimieren oder komprimieren Sie den resultierenden dist-Ordner
- Bereitstellen und Dekomprimieren auf Ihrem Server
- Führen Sie node index.js über die Konsole aus.
Ausführen der Anwendung
Um die Anwendung lokal auszuführen
- Klon-Repo
- Führen Sie npm install aus dem Stammordner aus
- Führen Sie node index.js aus
- Navigieren Sie zur IP-Adresse:Portnummer (d. h. lokal lautet sie http://localhost:port).
Datenbank
Dynamodb lokal festlegen
- Befolgen Sie die Anweisungen im Link, um Dynamodb herunterzuladen und lokal auszuführen: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
- Richten Sie AWS-Anmeldeinformationen lokal ein: http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
- Sobald Dynamodb lokal eingerichtet ist. Verwenden Sie das folgende Skript, um eine Tabelle zu erstellen und die Daten in die Dynamodb einzufügen (führen Sie den Knoten „database.js“ vom Terminal aus aus).
- Ändern Sie beim Ausführen des Skripts den Tabellennamen und die Serverinformationen