Update Download func (but it doesn't work yet)

This commit is contained in:
Yehuda Eisenberg
2022-07-15 12:47:24 +03:00
committed by GitHub
parent 9dfa1006ed
commit 7ca2d299b9

View File

@@ -79,81 +79,89 @@ async function ping() {
}); });
} }
async function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function download(multiConnection) { async function download(multiConnection) {
return new Promise(resolve => { // return new Promise(resolve => {
var totalStartTime = 0; var startTime = 0;
requests = []; var requests = {"status":[], "speed":[], "requests":[]};
requestsHelper = [];
function temp(i){
setTimeout(
function() {
var startTime = 0;
requests[i] = new XMLHttpRequest();
requestsHelper[i] = [];
requestsHelper[i].done = false;
requests[i].open("GET", serverDUrl + "?_=" + Math.random(), true);
requests[i].onreadystatechange = function() {
if (requests[i].readyState === 4 && requests[i].status === 200) {
var endTime = new Date().getTime();
var reqLength = requests[i].responseText.length * 8;
var sumTime = (endTime - startTime) / 1000;
var speed = (((reqLength / sumTime) / 1024 /* Kbps */ ) / 1024 /* Mbps */ ).toFixed(2);
requestsHelper[i].speed = speed; for(var i = 0; i < multiConnection; i++){
requestsHelper[i].sumTime = sumTime; var tmpReq = new XMLHttpRequest();
requestsHelper[i].done = true; tmpReq.open("GET", serverDUrl + "?_=" + Math.random(), true);
alert("request " + i + " done."); tmpReq.onreadystatechange = function() {
} if(status == "stop"){
}; tmpReq.abort();
requests[i].onprogress = function() { requests['status'][i] = "stoped";
if (status == "stop") { }
requests[i].abort(); if (tmpReq.readyState === 4) {
} if(tmpReq.status !== 200) console.log(tmpReq.status);
var endTime = new Date().getTime();
var reqLength = tmpReq.responseText.length * 8;
var sumTime = (endTime - startTime) / 1000;
var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
var endTime = new Date().getTime(); requests['status'][i] = "done";
var reqLength = requests[i].responseText.length * 8; requests['speed'][i] = speed;
var sumTime = (endTime - startTime) / 1000; }
var speed = (((reqLength / sumTime) / 1024 /* Kbps */ ) / 1024 /* Mbps */ ).toFixed(2); };
tmpReq.onprogress = function() {
if(status == "stop"){
tmpReq.abort();
requests['status'][i] = "stoped";
}
requestsHelper[i].speed = speed; var endTime = new Date().getTime();
requestsHelper[i].sumTime = sumTime; var reqLength = tmpReq.responseText.length * 8;
}; var sumTime = (endTime - startTime) / 1000;
try { var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
startTime = new Date().getTime();
requests[i].send(null); requests['status'][i] = "progress";
} catch (exception) { requests['speed'][i] = speed;
alert("Your internet connection is unavelible..."); };
}
}, requests['status'][i] = "start";
1); requests['speed'][i] = "0";
requests['requests'][i] = tmpReq;
} }
totalStartTime = new Date().getTime(); startTime = new Date().getTime();
for (var i = 0; i < multiConnection; i++) { for(var i = 0; i < multiConnection; i++){
temp(i); try {
} requests['requests'][i].send(null);
}
catch(exception) {
alert("Your internet connection is unavelible...");
}
}
while(true){ while(true){
await sleep(100);
done = true; done = true;
var tmpTotalSpeed = 0; var tmpTotalSpeed = 0;
requestsHelper.forEach(function (request){ for(var i = 0; i < multiConnection; i++){
if(done && !request.done) done = false; if(done && requests['status'][i] != "done")
tmpTotalSpeed += request.speed done = false;
});
tmpTotalSpeed += requests['speed'][i];
}
var totalEndTime = new Date().getTime(); var totalEndTime = new Date().getTime();
var totalSpeed = tmpTotalSpeed / multiConnection; var totalSpeed = tmpTotalSpeed / multiConnection;
var totalSumTime = (totalEndTime - totalStartTime) / 1000; var totalSumTime = (totalEndTime - startTime) / 1000;
if(done){ if(done){
resolve(totalSpeed + " Mbps (" + totalSumTime + " s)"); return /*resolve*/(totalSpeed + " Mbps (" + totalSumTime + " s)");
return; // return;
} }
else{ else{
setText("down", totalSpeed + " Mbps (" + totalSumTime + " s)"); setText("down", totalSpeed + " Mbps (" + totalSumTime + " s)");
} }
} }
}); //});
} }
function junkData(length) { function junkData(length) {