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