Prueba de velocidadJS
Speed-testJS es una prueba de velocidad basada en JavaScript que brindará a los usuarios una vista enriquecida de su velocidad de Internet. Proporcionar a los usuarios no solo su latencia, velocidades de carga y descarga y contexto en torno a toda su experiencia en Internet. Al usar datos de niveles de velocidad para agregar una métrica de calificación a los resultados de las pruebas de velocidad estándar, los usuarios ahora sabrán si su experiencia es mala, buena o excelente.
Despliegue
Para implementar en un servidor de prueba, consulte el archivo README en la carpeta ansible .
Configuración del servidor cliente
La aplicación consta de un software nodo/express que ejecuta el servidor y javascript/html simple en el cliente. El servidor alimenta los puntos finales, la comunicación websocket, las interacciones de la base de datos y el sitio web del cliente.
Servidor
Index.js es el punto de partida de la aplicación que contiene las funciones necesarias para ejecutar la aplicación. Las configuraciones importantes en este archivo son:
Dirección IP y puertos: el servidor se vinculará automáticamente a las direcciones ipv4 e ipv6 de la máquina host en la que está implementado (es decir, app.listen(SERVERPORT,'::');). Además, se pueden asignar puertos con app.listen(ADDITIONALPORT);
Solicitud HTTP: la configuración http se define para permitir publicaciones http y solicitudes entre dominios.
WebSockets: la comunicación websockets está definida
Puntos finales de REST: los puntos finales de descanso están expuestos para completar una prueba de velocidad e incluyen lo siguiente:
- plan de prueba: el plan de prueba devolverá datos json que contienen las direcciones IP ipv4, ipv6 y los puertos utilizados para los puntos finales de descanso y los websockets que se ejecutan en el servidor y la dirección IP del cliente. También funciones adicionales de prueba de velocidad (es decir, se pueden devolver indicadores de enrutamiento basados en latencia)
- latencia: devuelve un mensaje pong simple
- descargar: datos binarios basados en solicitud
- subir: acepta publicaciones para subir
- downloadProbe: devuelve el tamaño de prueba de ancho de banda de descarga recomendado según la solicitud
- calculadora: devuelve cálculos basados en la matriz de solicitudes que proporciona estadísticas sobre el dato.
- testServer: utilizado en enrutamiento basado en latencia. Devolverá las URL de los servidores de prueba que se pueden usar para encontrar el servidor del armario para un cliente.
Configuración: la configuración genérica (puertos, latencyBasedRouting,...) se establece en index.js. La personalización específica (es decir, la base de datos) se puede colocar en la carpeta de configuración.
- Parámetros de configuración
- Puntos finales de descanso
- WebSockets
- La carpeta de módulos contiene módulos personalizados utilizados para la aplicación.
Cliente
Cliente: la aplicación cliente reside en la carpeta pública y consta de JavaScript simple. Index.html es la página de inicio predeterminada de la aplicación y contendrá un ejemplo de extremo a extremo de una prueba de velocidad de ancho de banda. A continuación se describe la estructura de carpetas de la aplicación cliente:
- lib: la carpeta lib contiene archivos javascript utilizados para medir el ancho de banda y medidas relacionadas.
- ejemplo: la carpeta de ejemplo contiene archivos html utilizados para probar los archivos javascript de medición en la carpeta lib
- Objetos base xmlhttprequest y websocket
- Diferentes conjuntos de pruebas que utilizan la base xmlhttprequest base y los objetos websocket
- prueba: la carpeta de prueba contiene pruebas unitarias
- uilib: archivos javascript específicos de la interfaz de usuario.
- img: imágenes para prueba o interfaz de usuario
Implementación manual
Grunt se utiliza para empaquetar los archivos y carpetas necesarios para implementar la aplicación en un servidor para ejecutar la aplicación. Los pasos se enumeran a continuación:
- ejecute el paquete gruñido desde la carpeta raíz
- tar, comprimir o comprimir la carpeta dist resultante
- implementar y descomprimir en su servidor
- ejecute el nodo index.js desde la consola.
Ejecutando la aplicación
Para ejecutar la aplicación localmente
- Clonar repositorio
- ejecute npm install desde la carpeta raíz
- ejecutar nodo index.js
- busque la dirección IP: número de puerto (es decir, localmente será http://localhost:puerto
Base de datos
Para configurar dynamodb localmente
- Siga las instrucciones del enlace para descargar y ejecutar dynamodb localmente http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
- Configure las credenciales de AWS localmente http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
- Una vez que dynamodb esté configurado localmente. Utilice lo siguiente para crear una tabla e insertar los datos en dynamodb (ejecute el nodo Database.js desde la terminal)
- Mientras se ejecuta el script, cambie el nombre de la tabla y la información del servidor