速度测试JS
Speed-testJS 是一种基于 JavaScript 的速度测试,可为用户提供有关其互联网速度的丰富视图。不仅为用户提供延迟、上传和下载速度以及整个互联网体验的背景信息。使用速度等级数据将合格指标添加到标准速度测试结果中,用户现在可以知道他们的体验是差、好还是好
部署
要部署到测试服务器,请参阅ansible文件夹下的 README。
客户端服务器设置
该应用程序由运行服务器的节点/express 软件和客户端上的纯 javascript/html 组成。服务器为重置端点、Websocket 通信、数据库交互和客户端网站提供支持。
服务器
Index.js 是应用程序的起点,包含运行应用程序所需的功能。该文件中的重要设置是:
IP 地址和端口:服务器将自动绑定到其部署到的主机的 ipv4 和 ipv6 地址(即 app.listen(SERVERPORT,'::');)。可以使用 app.listen(ADDITIONALPORT); 分配额外的端口
Http 请求:http 配置被定义为允许 http posts 和跨域请求。
WebSockets:定义了websockets通信
REST 端点:暴露其余端点以完成速度测试,包括以下内容:
- testplan:testplan 将返回包含 ipv4、ipv6 IP 地址和端口的 json 数据,这些数据用于在服务器和客户端 ip 地址上运行的其余端点和 Websocket。还有额外的速度测试功能(即可以返回基于延迟的路由标志)
- 延迟:返回简单的 pong 消息
- 下载:根据请求的二进制数据
- upload:接受帖子上传
- downloadProbe:根据请求返回推荐的下载带宽测试大小
- 计算器:根据请求数组返回计算结果,给出数据统计信息。
- testServer:用于基于延迟的路由。它将返回测试服务器 URL,可用于向客户端查找最接近的服务器
配置:通用配置(端口、latencyBasedRouting...)在index.js 中设置。具体的定制(即数据库)可以放在config文件夹下
- 配置参数
- 休息端点
- WebSockets
- Modules 文件夹包含用于应用程序的自定义模块。
客户
客户端:客户端应用程序驻留在公共文件夹中,由纯 JavaScript 组成。 Index.html 是应用程序的默认起始页,将包含带宽速度测试的端到端示例。下面描述客户端应用程序的文件夹结构:
- lib:lib 文件夹包含用于测量带宽和相关测量的 javascript 文件。
- 示例:示例文件夹包含用于测试测量的 html 文件 lib 文件夹中的 javascript 文件
- 基本 xmlhttprequest 和 websocket 对象
- 使用基本 Base xmlhttprequest 和 websocket 对象的不同测试套件
- test:test文件夹包含单元测试
- uilib:特定于 UI 的 javascript 文件。
- img:用于测试或用户界面的图像
手动部署
Grunt 用于打包所需的文件和文件夹,以将应用程序部署到服务器来运行应用程序。步骤如下:
- 从根文件夹运行 grunt 包
- tar、zip 或压缩生成的 dist 文件夹
- 在您的服务器上部署并解压缩
- 从控制台执行节点index.js。
运行应用程序
在本地运行应用程序
- 克隆仓库
- 从根文件夹运行 npm install
- 运行节点index.js
- 浏览到 ip 地址:端口号(即本地地址为 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 中(从终端执行节点database.js)
- 执行脚本时更改表名称和服务器信息