diff --git a/service.js b/service.js index 13137f3..14c6524 100644 --- a/service.js +++ b/service.js @@ -14,20 +14,28 @@ async function startTest(){ } setText("status", "checking ping..."); - await ping((ms) => {setText("ping", ms)}); - if(status == "stoped"){stopTest();return;} + var pingMS = await ping(); + setText("ping", pingMS); + + if(status == "stop"){stopTest();return;} + setText("status", "checking download..."); - await download((mb) => {setText("down", mb)}); - if(status == "stoped"){stopTest();return;} + var downMB = await download(); + setText("down", downMB); + + if(status == "stop"){stopTest();return;} + setText("status", "checking upload..."); - await upload((mb) => {setText("up", mb)}); - if(status == "stoped"){stopTest();return;} - status = "stop"; + var downMB = await upload(); + setText("up", downMB); + + status = ""; setText("status", "done."); setText("button", "Start Test"); } function stopTest(){ + status = ""; setText("button", "Start Test"); setText("status", "stoped."); } @@ -36,70 +44,77 @@ function setText(elm, text){ document.getElementById(elm).innerText = text; } -async function ping(callback) { - var startTime = 0; - var request = new XMLHttpRequest(); - request.open("HEAD", serverEUrl + "?_=" + Math.random(), true); - request.onreadystatechange = function() { - if (request.readyState == 4) { - var endTime = new Date().getTime(); - callback(endTime - startTime); +async function ping() { + return new Promise(resolve => { + var startTime = 0; + var request = new XMLHttpRequest(); + request.open("HEAD", serverEUrl + "?_=" + Math.random(), true); + request.onreadystatechange = function() { + if (request.readyState == 4) { + 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){ - var startTime = 0; - var request = new XMLHttpRequest(); - request.open("GET", serverGUrl, true); - request.onreadystatechange = function() { - if (request.readyState == 4 && request.status === 200) { - var endTime = new Date().getTime(); - var reqLength = request.responseText.length * 8; - var sumTime = (endTime - startTime) / 1000; - var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2); - callback(speed + " Mbps"); +async function download(){ + return new Promise(resolve => { + var startTime = 0; + var request = new XMLHttpRequest(); + request.open("GET", serverGUrl, true); + request.onreadystatechange = function() { + if (request.readyState == 4 && request.status === 200) { + var endTime = new Date().getTime(); + var reqLength = request.responseText.length * 8; + var sumTime = (endTime - startTime) / 1000; + 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 = ''; for (var i = 0; i < length; i++) result += chars[Math.floor(Math.random() * chars.length)]; return result; } -async function upload(callback){ - var startTime = 0; - var junkLength = 2500000; - var junk = await junkData(junkLength); //=2.5 Mb - var request = new XMLHttpRequest(); - request.open("POST", serverEUrl + "?_=" + Math.random(), true); - request.setRequestHeader("Content-Type", "application/octet-stream"); - request.onreadystatechange = function() { - if (request.readyState == 4 && request.status === 200) { - var endTime = new Date().getTime(); - var sumTime = (endTime - startTime) / 1000; - var speed = (((junkLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2); - callback(speed + " Mbps"); +async function upload(){ + return new Promise(resolve => { + var startTime = 0; + var junkLength = 2500000; //=2.5 Mb + var junk = junkData(junkLength); + console.log(junk); + var request = new XMLHttpRequest(); + request.open("POST", serverEUrl + "?_=" + Math.random(), true); + request.setRequestHeader("Content-Type", "application/octet-stream"); + request.onreadystatechange = function() { + if (request.readyState == 4 && request.status === 200) { + var endTime = new Date().getTime(); + 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..."); - } + }); }