js 检测客户端网速

<!doctype html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>js实现的网速测试方法</title>
</head>
<body>
<script>
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("<div id='div1'>"+speed + " KB/s</div>");
    console.log(speed + " KB/s");  //215 KB/sec
}
testBW(callback);


</script>
</body>
</html>

  

posted on 2019-06-12 11:42  神奇的旋风  阅读(976)  评论(0编辑  收藏  举报

导航