fix async (add Promise)
This commit is contained in:
137
service.js
137
service.js
@@ -14,20 +14,28 @@ async function startTest(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
setText("status", "checking ping...");
|
setText("status", "checking ping...");
|
||||||
await ping((ms) => {setText("ping", ms)});
|
var pingMS = await ping();
|
||||||
if(status == "stoped"){stopTest();return;}
|
setText("ping", pingMS);
|
||||||
|
|
||||||
|
if(status == "stop"){stopTest();return;}
|
||||||
|
|
||||||
setText("status", "checking download...");
|
setText("status", "checking download...");
|
||||||
await download((mb) => {setText("down", mb)});
|
var downMB = await download();
|
||||||
if(status == "stoped"){stopTest();return;}
|
setText("down", downMB);
|
||||||
|
|
||||||
|
if(status == "stop"){stopTest();return;}
|
||||||
|
|
||||||
setText("status", "checking upload...");
|
setText("status", "checking upload...");
|
||||||
await upload((mb) => {setText("up", mb)});
|
var downMB = await upload();
|
||||||
if(status == "stoped"){stopTest();return;}
|
setText("up", downMB);
|
||||||
status = "stop";
|
|
||||||
|
status = "";
|
||||||
setText("status", "done.");
|
setText("status", "done.");
|
||||||
setText("button", "Start Test");
|
setText("button", "Start Test");
|
||||||
}
|
}
|
||||||
|
|
||||||
function stopTest(){
|
function stopTest(){
|
||||||
|
status = "";
|
||||||
setText("button", "Start Test");
|
setText("button", "Start Test");
|
||||||
setText("status", "stoped.");
|
setText("status", "stoped.");
|
||||||
}
|
}
|
||||||
@@ -36,70 +44,77 @@ function setText(elm, text){
|
|||||||
document.getElementById(elm).innerText = text;
|
document.getElementById(elm).innerText = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function ping(callback) {
|
async function ping() {
|
||||||
var startTime = 0;
|
return new Promise(resolve => {
|
||||||
var request = new XMLHttpRequest();
|
var startTime = 0;
|
||||||
request.open("HEAD", serverEUrl + "?_=" + Math.random(), true);
|
var request = new XMLHttpRequest();
|
||||||
request.onreadystatechange = function() {
|
request.open("HEAD", serverEUrl + "?_=" + Math.random(), true);
|
||||||
if (request.readyState == 4) {
|
request.onreadystatechange = function() {
|
||||||
var endTime = new Date().getTime();
|
if (request.readyState == 4) {
|
||||||
callback(endTime - startTime);
|
var endTime = new Date().getTime();
|
||||||
|
resolve(endTime - startTime);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
startTime = new Date().getTime();
|
||||||
|
request.send(null);
|
||||||
|
} catch(exception) {
|
||||||
|
alert("Your internet connection is unavelible...");
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
try {
|
|
||||||
startTime = new Date().getTime();
|
|
||||||
request.send(null);
|
|
||||||
} catch(exception) {
|
|
||||||
alert("Your internet connection is unavelible...");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function download(callback){
|
async function download(){
|
||||||
var startTime = 0;
|
return new Promise(resolve => {
|
||||||
var request = new XMLHttpRequest();
|
var startTime = 0;
|
||||||
request.open("GET", serverGUrl, true);
|
var request = new XMLHttpRequest();
|
||||||
request.onreadystatechange = function() {
|
request.open("GET", serverGUrl, true);
|
||||||
if (request.readyState == 4 && request.status === 200) {
|
request.onreadystatechange = function() {
|
||||||
var endTime = new Date().getTime();
|
if (request.readyState == 4 && request.status === 200) {
|
||||||
var reqLength = request.responseText.length * 8;
|
var endTime = new Date().getTime();
|
||||||
var sumTime = (endTime - startTime) / 1000;
|
var reqLength = request.responseText.length * 8;
|
||||||
var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
|
var sumTime = (endTime - startTime) / 1000;
|
||||||
callback(speed + " Mbps");
|
var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
|
||||||
|
resolve(speed + " Mbps");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
startTime = new Date().getTime();
|
||||||
|
request.send(null);
|
||||||
|
} catch(exception) {
|
||||||
|
alert("Your internet connection is unavelible...");
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
try {
|
|
||||||
startTime = new Date().getTime();
|
|
||||||
request.send(null);
|
|
||||||
} catch(exception) {
|
|
||||||
alert("Your internet connection is unavelible...");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function junkData(length){
|
function junkData(length){
|
||||||
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()`[]\\{}|:"<>?,./;\'', result = '';
|
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()`[]\\{}|:"<>?,./;\'', result = '';
|
||||||
for (var i = 0; i < length; i++) result += chars[Math.floor(Math.random() * chars.length)];
|
for (var i = 0; i < length; i++) result += chars[Math.floor(Math.random() * chars.length)];
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function upload(callback){
|
async function upload(){
|
||||||
var startTime = 0;
|
return new Promise(resolve => {
|
||||||
var junkLength = 2500000;
|
var startTime = 0;
|
||||||
var junk = await junkData(junkLength); //=2.5 Mb
|
var junkLength = 2500000; //=2.5 Mb
|
||||||
var request = new XMLHttpRequest();
|
var junk = junkData(junkLength);
|
||||||
request.open("POST", serverEUrl + "?_=" + Math.random(), true);
|
console.log(junk);
|
||||||
request.setRequestHeader("Content-Type", "application/octet-stream");
|
var request = new XMLHttpRequest();
|
||||||
request.onreadystatechange = function() {
|
request.open("POST", serverEUrl + "?_=" + Math.random(), true);
|
||||||
if (request.readyState == 4 && request.status === 200) {
|
request.setRequestHeader("Content-Type", "application/octet-stream");
|
||||||
var endTime = new Date().getTime();
|
request.onreadystatechange = function() {
|
||||||
var sumTime = (endTime - startTime) / 1000;
|
if (request.readyState == 4 && request.status === 200) {
|
||||||
var speed = (((junkLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
|
var endTime = new Date().getTime();
|
||||||
callback(speed + " Mbps");
|
var sumTime = (endTime - startTime) / 1000;
|
||||||
|
var speed = (((junkLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2);
|
||||||
|
resolve(speed + " Mbps");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
startTime = new Date().getTime();
|
||||||
|
request.send(junk);
|
||||||
|
} catch(exception) {
|
||||||
|
alert("Your internet connection is unavelible...");
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
try {
|
|
||||||
startTime = new Date().getTime();
|
|
||||||
request.send(junk);
|
|
||||||
} catch(exception) {
|
|
||||||
alert("Your internet connection is unavelible...");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user