云浮速度测试
@cloudflare/speedtest 是一个用于测量客户端互联网连接质量的 JavaScript 模块。 使用Cloudflare 速度测试测量应用程序的测量引擎 https://speed.cloudflare.com (中文(中国大陆) )。 。 。 .
模块针对 云雾花 边缘网络并依赖 性能资源Timing 浏览器 api 以获取计时结果. 网络连接的特点是有下载/上载带宽、延迟和包丢失等项目.
请注意,Cloudflare在完成后收集测量结果,以便计算关于互联网连接质量的综合见解.
安装
将此软件包添加到您的 package.json 在您的项目目录根中运行此选项 :
npm install @cloudflare/speedtest
简单使用
import SpeedTest from '@cloudflare/speedtest';
new SpeedTest().onFinish = results => console.log(results.getSummary());
API 参考
SpeedTest 是一个 JavaScript 类,应该与 new 关键词 不需要通过一个配置对象,因为所有项目都有默认值.
证据
new SpeedTest({ configOptions })
标有QQ的选项是 实验和不稳定:它们可能改变行为, 重新命名,或在任何发布中被删除,包括补丁。 不依赖 他们.
| 配置选项 | 说明 | 默认 |
|---|---|---|
| 自动启动数字 : 布尔 | 是否在即时状态下自动启动测量 . | true |
| 计量 目标数字 : 字符串 [] | 发送延迟、下载和上传请求的源头 measurementDownloadPath 财务报告和审定财务报表 measurementUploadPath测试在目标上空延后 当空地, downloadApiUrl 财务报告和审定财务报表 uploadApiUrl 改为使用。 一个不裸露的入口 http(s) 来源抛出 a TypeError 当引擎被创建时。 与页面不同来源的目标必须发出 Timing-Allow-Origin 页: 对目标的请求未经报告即通过 onError 然后跳过. | [] |
| 下行负荷平面数字 : 字符串 | 每集的延迟和下载请求路径 measurementTargets。它可能包括一个查询字符串。 一条没有开始的道路 / 丢出一个 TypeError 当引擎被创建时. | /__down |
| 度量加载Path数字 : 字符串 | 每个上传请求的路径 measurementTargets。它可能包括一个查询字符串。 一条没有开始的道路 / 丢出一个 TypeError 当引擎被创建时. | /__up |
| 下载 ApiUrl数字 : 字符串 | 折旧:使用 measurementTargets。 。 。 . 用于执行下载的 API URL 获取请求, 当 measurementTargets 为空. | https://speed.cloudflare.com/__down |
| 上传 ApiUrl数字 : 字符串 | 折旧:使用 measurementTargets。 。 。 . 用于执行上传 POST 请求的 API URL, 当 measurementTargets 为空. | https://speed.cloudflare.com/__up |
| 转动ServerUri数字 : 字符串 | TURN服务器的URI用来测量包丢失,例如. turn.cloudflare.com:3478。见 数据包损失。 。 。 . | null |
| 转动服务器CredsApiUrl数字 : 字符串 | 返回 TURN 服务器证书的 URI 。 期待 JSON 对 username 财务报告和审定财务报表 credential 键。 见 数据包损失。 。 。 . | null |
| 转向服务器用户数字 : 字符串 | TURN 服务器证书的用户名 . | - 说吧 |
| 转向服务器Pass数字 : 字符串 | TURN服务器证书的密码. | - 说吧 |
| 权限键数字 : 字符串 | 🧪 实验. 将测试结果归咎于注册客户的不透明标志,作为 Authorization: Bearer 关于测量、TURN证书和成果记录请求的页眉。 从你自己的后端获取——引擎从不要求自己一个. 要求数 authorizationEnabled他自己是不会被派遣的。 除非 allowInsecureAuthorizationToken 已经设定. | null |
授权已启用数字 : 'header' 布尔 | 🧪 实验. 选择发送 authorizationToken,否则即使在设定时也不予考虑. 'header' 财务报告和审定财务报表 true 都发作 Authorization: Bearer· ; true 是永久别名,用于: 'header',因此可以添加未来的传输,而不改变一个已有的配置的作用. | undefined |
| 允许不安全认证数字 : 布尔 | 🧪 实验. 发送 authorizationToken 即使终点不是HTTPS, 用于本地开发对一个 http:// 服务器。 在制作中永远不要启用此功能: 服务器将一个从平白文字上看到的符号视为已损坏并撤销它 . | false |
| 测量数字 : 数组 | 由速度测试引擎执行的测量序列. 见 下级 用于此选项的特定语法. | |
| 下行记录数字 : 布尔 | 是否与下载请求同时进行额外的延迟测量,以测量加载的延迟(下载期间). | true |
| 升入负载数字 : 布尔 | 是否与上传请求同时进行额外的延迟测量,以测量加载的延迟(在上传期间). | true |
| 装入温度数字 : 编号 | 在装入的延迟请求之间等待的时间间隔( 毫秒) . | 400个 |
| 带宽数字 : 编号 | 在下载/上载计量套件中达到的最小持续时间(以毫秒计),用于在相同方向上停止文件尺寸较大的进一步测量. | 1 000个 |
| 中止请求期限数字 : 编号 | 单个请求的最长期限(以毫秒为单位). 需要更长时间的请求被中止和跳过 . bandwidthAbortRequestDuration 是一个被贬值的别名. | 0 (残疾) |
| 中止测试期限数字 : 编号 | 整个测试的最大运行时间(以毫秒计,不包括暂停时间). 到达后,测试以迄今所收集的结果为结束. | 0 (残疾) |
| 估计服务时间数字 : 编号 | 如果下载/上载API不返回 a server-timing 包含在服务器所花时间的响应头,这个固定值(以毫秒计)将从所有时间到第一字节的计算中减去. | 0 个 |
| 死亡率数字 : 编号 | 百分位数( 0到 1 之间) 用于从一组测量中计算耐久性 . | 0.5 (韩语) |
| 带宽百分点数字 : 编号 | 从一组测量中计算带宽的百分位数( 0到 1 之间) . | 0.9 (中文(简体) ) |
| 带宽最小请求期限数字 : 编号 | 要求考虑在带宽计算中使用足够好的测量方法的最小持续时间(以毫秒计). | 10个 |
| 装入请求结束数字 : 编号 | 要求考虑装入连接的最小期限(以毫秒计). | 250号 |
| 装入LatencyMax点数字 : 编号 | 为加载的耐久测量保留的最大数据点数. 超过这一数额时,保留最新数额. | 20国 |
属性
| 属性 | 说明 |
|---|---|
| 结果数字 : 结果 | 获取电流 测试结果 对象。 如果测试仍在运行, 则可能得出不完整的值 . |
| 正在运行数字 : 布尔 | 获取测试引擎是否正在运行 . |
| 已完成数字 : 布尔 | 更清楚地了解测试引擎是否完成了所有测量,结果被认为是最终的. |
方法
| 方法 | 说明 |
|---|---|
| 播放() | 开始或恢复测量。 如果引擎已经运行或已完成, 则不做任何事 . |
| 暂停( c) | 暂停测量。 如果引擎已经暂停或完成, 则不做任何工作 . |
| 重新启动( c) | 清除当前结果并重新开始测量. |
通知事件
| 事件方法 | 参数 | 说明 |
|---|---|---|
| 运行变化 | 运行中 : 布尔 | 每当测试引擎启动或停止时,就发出警报. 当前状态作为函数参数包含. |
| 关于结果的变化 | {类型 : 字符串 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 | 任何项目在结果发生变化时都会被援引,通常表示测量完成. 改变的计量类型作为信息属性被包括在函数参数中. |
| 完成时 | 结果 : 结果 | 当测试结束时,用 结果对象 以函数参数方式收集 . |
| 错误 | 错误 : 字符串状态 : 数字 qq 未定义 | 当在一次测量中发生出错时即告发,可用时为HTTP状态. 多数错误不会停止测试;呼叫 pause() 从这个召回停止它. |
测量配置
试验发动机将进行的具体测量(及其序列)可使用 measurements 配置选项 。 这应该是一系列物体,每个物体都有 type 字段,加上该计量类型特有的额外字段.
由引擎执行的默认测量数据集是:
[
{ type: 'latency', numPackets: 1 }, // initial latency estimation
{ type: 'download', bytes: 1e5, count: 1, bypassMinDuration: true }, // initial download estimation
{ type: 'latency', numPackets: 20 },
{ type: 'download', bytes: 1e5, count: 9 },
{ type: 'download', bytes: 1e6, count: 8 },
{ type: 'upload', bytes: 1e5, count: 8 },
{ type: 'upload', bytes: 1e6, count: 6 },
{ type: 'download', bytes: 1e7, count: 6 },
{ type: 'upload', bytes: 1e7, count: 4 },
{ type: 'download', bytes: 2.5e7, count: 4 },
{ type: 'upload', bytes: 2.5e7, count: 4 },
{ type: 'download', bytes: 1e8, count: 3 },
{ type: 'upload', bytes: 5e7, count: 3 },
{ type: 'download', bytes: 2.5e8, count: 2 }
]
以下是每个测量类型的可用字段:
延迟
| 外地 | 需求 | 说明 | 默认 |
|---|---|---|---|
| 数字包数字 : 编号 | 对 | 延迟的次数得到执行请求. 这些请求是针对下载API的 bytes=0,然后是往返时间到第一个字节的时间 requestStart 财务报告和审定财务报表 responseStart 被提取出来. | - 说吧 |
下载/上传
每一个这些计量集都与特定的文件大小相接. 发动机遵循了每个方向(下载或上传)的坡道方法. 当一个方向有多个测量组(文件大小增加)时,引擎会继续运行,直到达到指定条件 bandwidthFinishRequestDuration,此时将忽略进一步朝同一方向设置.
| 外地 | 需求 | 说明 | 默认 |
|---|---|---|---|
| 字节数字 : 编号 | 对 | 从下载的 API 请求的文件大小, 或张贴到上传的 API 。 每个请求的带宽(计算为每秒比特,或bps)通过除以 transferSize (以位数计)由请求持续时间(不包括服务器处理时间). 持续时间从浏览器报告的最后答复信头中计量(finalResponseHeadersStart),因此临时 1xx 答复并不缩短. | - 说吧 |
| 计数数字 : 编号 | 对 | 执行此文件大小的请求数量 。 报告持续时间为零或负数或没有资源时段输入的请求,没有可测量的带宽:它仍然用于 count,但通过控制台警告从结果中丢弃,所以一个集可以返回的数据点比要求的要少。 如果在一个计量组内连续三次请求没有资源时间输入,测试以迄今收集的结果结束,并报告通过 onError。 。 。 . | - 说吧 |
| 绕行定义数字 : 布尔 | 没有 | 是否为 bandwidthFinishRequestDuration 检查应当被忽略,并指示引擎在任何情况下继续测量这个方向. | false |
数据包损失
通过向WebRTC TURN服务器提交一组UDP数据包,以及确定有多少数据包没有到达,来测量包的损失。 提交这些包可以采用分批方式,其中分批之间有睡眠时间.
包丢失是选入的:它不是默认测量的一部分,它需要你自己的TURN服务器配置. 为了启用它,增加一个 packetLoss 测量,以及:
- 设定
turnServerCredsApiUrl返回 TURN 证书的结束点,加turnServerUri(例如:.turn.cloudflare.com:3478),除非终点也返回 aserver字段,或 - 设定
turnServerUri与你自己的turnServerUser财务报告和审定财务报表turnServerPass。 。 。 .
new SpeedTest({
turnServerUri: 'turn.cloudflare.com:3478',
turnServerCredsApiUrl: 'https://turn.example.com/turn-credentials',
measurements: [
// ...
{ type: 'packetLoss', numPackets: 1e3, responsesWaitTime: 3000 }
]
});
A 类 packetLoss 无任一选项的测量因出错而失败,引擎会继续到下一个测量.
使用 Cloudflare Worker 提供 TURN 证书的示例代码 Cloudflare 实时 TURN 服务器,可在 实例/回合-工作者. 参考工人的 文档 用于设置和部署指令.
| 外地 | 需求 | 说明 | 默认 |
|---|---|---|---|
| 数字包数字 : 编号 | 没有 | 要发送的 UDP 包总数 . | 100个 |
| 回复等待时间数字 : 编号 | 没有 | 等待最新数据包接收的时间间隔(以毫秒计),然后确定测量是否完整,所有未返回数据包是否丢失. | 5000块 |
| 批量大小数字 : 编号 | 没有 | 一批包的数量 。 如果该值高于 numPackets 只有一批货. | 10个 |
| 批次等待时间数字 : 编号 | 没有 | 在批次之间等待多长时间(以毫秒计). | 10个 |
| 连接 超时数字 : 编号 | 没有 | 连接到 TURN 服务器的超时 . | 5000块 |
结果对象
用于获取速度测试测量结果的一个实例对象. 此对象有以下方法:
| 方法 | 说明 |
|---|---|
| 获取摘要 () | 返回一个高层次的汇总对象,其中包含所进行测量的计算结果. |
| 获取未装入的Latency () | 返回闲置时连接延迟的减少值。 需要至少一个 latency 计量. |
| 正在获取已卸载的 Jitter () | 返回闲置时的连接焦点 。 慢跑被计算为相接相接的耐久度测量之间的平均距离. 至少需要两个 latency 测量. |
| 获取已卸载的灯塔( ) | 返回带有闲置时所测量的所有后缀的数组 。 包括按顺序衡量的一个值. |
| 获得下行记录( C) | 在下载方向上加载时返回连接延迟的减少值。 要求数 measureDownloadLoadedLatency 启用. |
| 获取“ 向下下载” Jitter () | 在下载方向上加载时返回连接焦点 。 要求数 measureDownloadLoadedLatency ,以及至少两个装入的耐用度测量. |
| 获得下行LadedLatencyPoints () | 返回包含在下载方向上加载时所测量的所有后缀的数组 。 包括每个装入量按顺序排列的一个值. 要求数 measureDownloadLoadedLatency 启用. |
| 获取LadedLatency () | 在上传方向上加载时返回连接延迟的减少值。 要求数 measureUploadLoadedLatency 启用. |
| 获取 LadedJitter () | 在上传方向上加载时返回连接焦点 。 要求数 measureUploadLoadedLatency ,以及至少两个装入的耐用度测量. |
| 获取LadedLatencyPoints () | 返回带有在上传方向上加载时所测量的所有后缀的数组 。 包括每个装入量按顺序排列的一个值. 要求数 measureUploadLoadedLatency 启用. |
| 获得下载 Bandwidth () | 返回下载带宽的减少值(bps)。 需要至少一个 download 测量,比 bandwidthMinRequestDuration 阈值. |
| 获得下载 Bandwidth Points () | 返回带有所有下载测量结果的数组。 每个项目将包括以下领域: { bytes, bps, duration, ping, measTime, serverTime, transferSize }。 。 。 . |
| 获取上载 Bandwidth () | 返回上传带宽的减少值(bps)。 需要至少一个 upload 测量,比 bandwidthMinRequestDuration 阈值. |
| 获取上载 Bandwidth Points () | 返回带有所有上传测量结果的数组。 每个项目将包括以下领域: { bytes, bps, duration, ping, measTime, serverTime, transferSize }。 。 。 . |
| 获取包 Loss () | 返回已测量的包损失比率的减少值(0至1)。 需要一个 packetLoss 计量集. |
| 获取 Packet Loss 细节( ) | 返回带有数据包损失测量细节的对象。 包括下列领域: { packetLoss, totalMessages, numMessagesSent, lostMessages }要求 packetLoss 计量集. |
| 获取总任务数( ) | 返回引擎运行的全部时间(以毫秒计),不包括任何被暂停的时间。 仅在引擎完成后可用. |
| 获取分数( ) | 返回计算 AIM 分数 将网络连接的质量按照流化、游戏或实时通信等使用案例分类。 这个分数只有在发动机完成所有测量后才能得到. 没有 packetLoss 测量,包损失被忽略在分数之外,所以出值低于5%以下的连接。 失败 packetLoss 测量计为0分. |