我想将庞大的POST请求发送到服务器,然后在指定的时间段后中止它,以便我可以测量上行链路带宽。我知道cloudflare's speedtest website接受了此类请求。该api如下所示:要发送1MB的文件,只需使用此代码段即可。
let size = 1 * 1e6; // 1MB
let url = `https://speed.cloudflare.com/__up`;
let req = await fetch(`${url}`, {...{
method: 'POST',
body: '0'.repeat(size),
headers: { 'content-length': size }
}});
let res = await req.text();
console.log(res);
在chrome控制台中粘贴上面代码段的副本会向我发出成功的1MB
请求。
我要执行的操作是使用Abort Controller API abort
发出此请求,然后对将请求主体的多少发送到服务器进行某种形式的测量。
要下载,我可以在下载请求上使用ReadableStream来做到这一点,因此我知道在取消下载之前已下载了多少文件。
这可能吗?