СкоростьтестJS
Speed-testJS — это тест скорости на основе JavaScript, который предоставит пользователям расширенное представление о скорости их Интернета. Предоставление пользователям не только информации о задержке, скорости загрузки и выгрузки, а также контексте всей их работы в Интернете. Используя данные уровня скорости для добавления соответствующего показателя к стандартным результатам теста скорости, пользователи теперь будут знать, является ли их опыт плохим, хорошим или отличным.
Развертывание
Для развертывания на тестовом сервере см. README в папке ansible .
Настройка клиент-сервера
Приложение состоит из программного обеспечения node/express, на котором работает сервер, и простого javascript/html на клиенте. Сервер обеспечивает сброс конечных точек, связь через веб-сокет, взаимодействие с базой данных и клиентский веб-сайт.
Сервер
Index.js — это отправная точка приложения, содержащая необходимые функции для запуска приложения. Важными настройками в этом файле являются:
IP-адрес и порты: сервер автоматически привязывается к адресам ipv4 и ipv6 хост-компьютера, на котором он развернут (т. е. app.listen(SERVERPORT,'::');). Дополнительно порты можно назначить с помощью app.listen(ADDITIONALPORT);
Http-запрос: конфигурация http определена так, чтобы разрешить HTTP-публикации и междоменные запросы.
WebSockets: определена связь через веб-сокеты.
Конечные точки REST: конечные точки отдыха подвергаются проверке скорости и включают в себя следующее:
- testplan: testplan вернет данные json, содержащие IPv4, IPv6 IP-адреса и порты, используемые для остальных конечных точек и веб-сокетов, работающих на сервере и клиентском IP-адресе. Также дополнительные функции тестирования скорости (т. е. могут быть возвращены флаги маршрутизации на основе задержки)
- задержка: возвращает простое сообщение Pong
- скачать: двоичные данные по запросу
- загрузить: принимает сообщения для загрузки
- downloadProbe: возвращает рекомендуемый размер тестирования пропускной способности загрузки на основе запроса.
- Калькулятор: возвращает вычисления на основе массива запросов, предоставляющего статистику по данным.
- testServer: используется в маршрутизации на основе задержки. Он возвращает URL-адреса тестовых серверов, которые можно использовать для поиска ближайшего сервера клиенту.
Конфигурация: общая конфигурация (порты, latencyBasedRouting и т. д.) задается в index.js. Конкретные настройки (например, базу данных) можно разместить в папке конфигурации.
- Параметры конфигурации
- Остальные конечные точки
- Вебсокеты
- Папка Modules содержит пользовательские модули, используемые в приложении.
Клиент
Клиент: клиентское приложение находится в общей папке и состоит из обычного JavaScript. Index.html — это стартовая страница приложения по умолчанию, которая будет содержать полный пример теста скорости полосы пропускания. Ниже описана структура папок клиентского приложения:
- lib: папка lib содержит файлы JavaScript, используемые для измерения пропускной способности и связанных с ней измерений.
- пример: папка примера содержит файлы HTML, используемые для тестирования файлов JavaScript измерений в папке lib.
- Базовые объекты xmlhttprequest и websocket
- Различные наборы тестов, использующие базовые объекты Base xmlhttprequest и websocket.
- test: папка тестов содержит модульные тесты
- uilib: файлы javascript, специфичные для пользовательского интерфейса.
- img: изображения для тестирования или пользовательского интерфейса
Развертывание вручную
Grunt используется для упаковки необходимых файлов и папок для развертывания приложения на сервере для его запуска. Шаги перечислены ниже:
- запустить пакет grunt из корневой папки
- tar, заархивируйте или сожмите полученную папку dist
- развернуть и распаковать на своем сервере
- выполните узел index.js из консоли.
Запуск приложения
Чтобы запустить приложение локально
- Клон репо
- запустите установку npm из корневой папки
- запустить узел index.js
- перейдите к номеру ipaddress:port (т. е. локально это будет http://localhost:port).
База данных
Чтобы установить Dynamodb локально
- Следуйте инструкциям по ссылке, чтобы загрузить и запустить dynamodb локально http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html.
- Настройте учетные данные AWS локально http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
- После того, как Dynamodb будет настроен локально. Используйте следующий сценарий для создания таблицы и вставки данных в dynamodb (выполните node data.js из терминала)
- При выполнении скрипта измените имя таблицы и информацию о сервере.