js实现的网速测试方法

function testBW(fn) {

var startTime, endTime, fileSize;

var xhr = new XMLHttpRequest();

xhr.timeout=30000;

xhr.onerror=function (){

console.log(‘onerror‘);

}

xhr.onreadystatechange =function(){

console.log(JSON.stringify(xhr));

if(xhr.readyState === 2){

startTime = Date.now();

}

if (xhr.readyState === 4) {

endTime = Date.now();

console.log(xhr.readyState+‘==‘+xhr.responseText.length);

fileSize = xhr.responseText.length;

console.log(fileSize);

var speed = fileSize / ((endTime - startTime)/1000) / 1024;

fn && fn(Math.floor(speed)||0)

console.log(‘complete‘);

}

if(xhr.status === 200) {

endTime = Date.now();

console.log(xhr.readyState+‘==‘+xhr.responseText.length);

fileSize = xhr.responseText.length;

console.log(fileSize);

var speed = fileSize / ((endTime - startTime)/1000) / 1024;

fn && fn(Math.floor(speed)||0)

}

}

//http://wangsu3s.acc5.com/ping.jpg

//http://alyun3s.acc5.com/ping.jpg

//http://app-static.acc5.com/app/ping.gif

xhr.open("GET", "http://app-static.acc5.com/app/ping.gif?rnd=" + Math.random(), true);

xhr.send();

}

function callback(speed){

document.write("

"+speed + " KB/s
");

console.log(speed + " KB/s"); //215 KB/sec

}

testBW(callback);

原文:https://www.cnblogs.com/xuan52rock/p/11008679.html

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐