use onprogress event

This commit is contained in:
YehudaEi
2020-12-10 14:29:23 +02:00
parent f01542bd65
commit 0323484345

View File

@@ -2,7 +2,6 @@ let serverEUrl = "http://localhost/speedtest/";
let serverGUrl = "http://localhost/speedtest/blank.file"; let serverGUrl = "http://localhost/speedtest/blank.file";
let status = ""; let status = "";
// TODO - add onprogress event
// TODO - check 5 connection together // TODO - check 5 connection together
async function startTest(){ async function startTest(){
@@ -49,8 +48,7 @@ function setText(elm, text){
async function ping() { async function ping() {
return new Promise(resolve => { return new Promise(resolve => {
var startTime = 0; var startTime, request = new XMLHttpRequest();
var request = new XMLHttpRequest();
request.open("HEAD", serverEUrl + "?_=" + Math.random(), true); request.open("HEAD", serverEUrl + "?_=" + Math.random(), true);
request.onreadystatechange = function() { request.onreadystatechange = function() {
if (request.readyState === 4) { if (request.readyState === 4) {
@@ -69,18 +67,23 @@ async function ping() {
async function download(){ async function download(){
return new Promise(resolve => { return new Promise(resolve => {
var startTime = 0; var startTime, request = new XMLHttpRequest();
var request = new XMLHttpRequest(); request.open("GET", serverGUrl + "?_=" + Math.random(), true);
request.open("GET", serverGUrl, true);
request.onreadystatechange = function() { request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) { if (request.readyState === 4 && request.status === 200) {
var endTime = new Date().getTime(); var endTime = new Date().getTime();
var reqLength = request.responseText.length * 8; var reqLength = request.response.length * 8;
var sumTime = (endTime - startTime) / 1000; var sumTime = (endTime - startTime) / 1000;
var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2); var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
resolve(speed + " Mbps (" + sumTime + " s)"); resolve(speed + " Mbps (" + sumTime + " s)");
} }
}; };
request.onprogress = function(){
var reqLength = request.response.length * 8;
var sumTime = (new Date().getTime() - startTime) / 1000;
var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
setText("down", speed + " Mbps (" + sumTime + " s)");
}
try { try {
startTime = new Date().getTime(); startTime = new Date().getTime();
request.send(null); request.send(null);
@@ -98,8 +101,7 @@ function junkData(length){
async function upload(){ async function upload(){
return new Promise(resolve => { return new Promise(resolve => {
var startTime = 0; var startTime, junkLength = 2500000; //=2.5 Mb
var junkLength = 2500000; //=2.5 Mb
var junk = junkData(junkLength); var junk = junkData(junkLength);
var request = new XMLHttpRequest(); var request = new XMLHttpRequest();
request.open("POST", serverEUrl + "?_=" + Math.random(), true); request.open("POST", serverEUrl + "?_=" + Math.random(), true);
@@ -112,6 +114,11 @@ async function upload(){
resolve(speed + " Mbps (" + sumTime + " s)"); resolve(speed + " Mbps (" + sumTime + " s)");
} }
}; };
request.onprogress = function(){
var sumTime = (new Date().getTime() - startTime) / 1000;
var speed = ((((junkLength * 8 /* byte (not bit) */) / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
setText("up", speed + " Mbps (" + sumTime + " s)");
}
try { try {
startTime = new Date().getTime(); startTime = new Date().getTime();
request.send(junk); request.send(junk);