|
@@ -66,10 +66,11 @@
|
|
socket.onmessage = function(event) {
|
|
socket.onmessage = function(event) {
|
|
if (event.data.indexOf("DATA:") == -1) {
|
|
if (event.data.indexOf("DATA:") == -1) {
|
|
if (event.data.indexOf("TTL_BANDWIDTH") != -1) {
|
|
if (event.data.indexOf("TTL_BANDWIDTH") != -1) {
|
|
- var bandwidth = event.data.split("=")[1].split(" ");
|
|
|
|
|
|
+ let bandwidth = event.data.split("=")[1].split(" ");
|
|
$("#dl").text(bandwidth[0]);
|
|
$("#dl").text(bandwidth[0]);
|
|
$("#dll").text("Download (" + bandwidth[1] + ")");
|
|
$("#dll").text("Download (" + bandwidth[1] + ")");
|
|
uploadBench();
|
|
uploadBench();
|
|
|
|
+ //pingTest();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|
|
@@ -86,9 +87,7 @@
|
|
socket.onopen = function(e) {
|
|
socket.onopen = function(e) {
|
|
$("#ul").text("⌛");
|
|
$("#ul").text("⌛");
|
|
socket.send("UPL");
|
|
socket.send("UPL");
|
|
- var randomStr = rnd(32768);
|
|
|
|
- var filesize = "DATA:".length + randomStr.length;
|
|
|
|
- setTimeout(executeULTest, 1000, socket, 0, 0, randomStr, filesize);
|
|
|
|
|
|
+ setTimeout(executeULTest, 1000, socket);
|
|
};
|
|
};
|
|
|
|
|
|
socket.onerror = function(error) {
|
|
socket.onerror = function(error) {
|
|
@@ -96,30 +95,31 @@
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
- function executeULTest(socket, CurrentPow, CurrentDif, randomStr, filesize) {
|
|
|
|
- var CurrentMB = Math.pow(2, CurrentPow);
|
|
|
|
- var start = new Date();
|
|
|
|
- for (var i = 0; i < CurrentMB; i++) {
|
|
|
|
- socket.send("DATA:" + randomStr);
|
|
|
|
- }
|
|
|
|
- var end = new Date();
|
|
|
|
- CurrentDif = (end.getTime() - start.getTime()) / 1000;
|
|
|
|
- CurrentPow++;
|
|
|
|
- if (CurrentDif < 5) {
|
|
|
|
- setTimeout(executeULTest, 1000, socket, CurrentPow, CurrentDif, randomStr, filesize);
|
|
|
|
- } else {
|
|
|
|
- socket.send("stop");
|
|
|
|
- var bandwidth = bytesToSpeed(CurrentMB * filesize / CurrentDif).split(" ");
|
|
|
|
- $("#ul").text(bandwidth[0]);
|
|
|
|
- $("#ull").text("Upload (" + bandwidth[1] + ")");
|
|
|
|
- pingTest();
|
|
|
|
- }
|
|
|
|
|
|
+ function executeULTest(socket) {
|
|
|
|
+ let CurrentMB = 0;
|
|
|
|
+ let start = new Date();
|
|
|
|
+ while(socket.bufferedAmount < 10485760 * 10) {
|
|
|
|
+ socket.send(new ArrayBuffer(32768));
|
|
|
|
+ CurrentMB += 32768;
|
|
|
|
+ }
|
|
|
|
+ let checker = setInterval(function(){
|
|
|
|
+ if(socket.bufferedAmount == 0) {
|
|
|
|
+ let end = new Date();
|
|
|
|
+ CurrentDif = (end.getTime() - start.getTime()) / 1000;
|
|
|
|
+ socket.send("stop");
|
|
|
|
+ let bandwidth = bytesToSpeed(CurrentMB / CurrentDif).split(" ");
|
|
|
|
+ $("#ul").text(bandwidth[0]);
|
|
|
|
+ $("#ull").text("Upload (" + bandwidth[1] + ")");
|
|
|
|
+ clearInterval(checker);
|
|
|
|
+ pingTest();
|
|
|
|
+ }
|
|
|
|
+ }, 100);
|
|
}
|
|
}
|
|
|
|
|
|
function pingTest() {
|
|
function pingTest() {
|
|
- var clientSendTimeStamp = [];
|
|
|
|
- var serverResponseTimeStamp = [];
|
|
|
|
- var clientReceiveTimeStamp = [];
|
|
|
|
|
|
+ let clientSendTimeStamp = [];
|
|
|
|
+ let serverResponseTimeStamp = [];
|
|
|
|
+ let clientReceiveTimeStamp = [];
|
|
$("#ping").text("⏱️");
|
|
$("#ping").text("⏱️");
|
|
let socket = new WebSocket(getWSEndpoint() + "/system/ajgi/interface?script=Speedtest/special/wspeedtest.js");
|
|
let socket = new WebSocket(getWSEndpoint() + "/system/ajgi/interface?script=Speedtest/special/wspeedtest.js");
|
|
|
|
|
|
@@ -140,11 +140,10 @@
|
|
}
|
|
}
|
|
|
|
|
|
function executePingTest(socket, clientSendTimeStamp, serverResponseTimeStamp, clientReceiveTimeStamp, count) {
|
|
function executePingTest(socket, clientSendTimeStamp, serverResponseTimeStamp, clientReceiveTimeStamp, count) {
|
|
- var clientTime = new Date();
|
|
|
|
|
|
+ let clientTime = new Date();
|
|
socket.send(clientTime);
|
|
socket.send(clientTime);
|
|
clientSendTimeStamp.push(clientTime.getTime());
|
|
clientSendTimeStamp.push(clientTime.getTime());
|
|
count++;
|
|
count++;
|
|
- console.log(count);
|
|
|
|
if (count < 3) {
|
|
if (count < 3) {
|
|
setTimeout(executePingTest, 1000, socket, clientSendTimeStamp, serverResponseTimeStamp, clientReceiveTimeStamp, count);
|
|
setTimeout(executePingTest, 1000, socket, clientSendTimeStamp, serverResponseTimeStamp, clientReceiveTimeStamp, count);
|
|
} else {
|
|
} else {
|
|
@@ -153,13 +152,12 @@
|
|
}
|
|
}
|
|
|
|
|
|
function showPingResult(clientSendTimeStamp, serverResponseTimeStamp, clientReceiveTimeStamp) {
|
|
function showPingResult(clientSendTimeStamp, serverResponseTimeStamp, clientReceiveTimeStamp) {
|
|
- console.log(clientSendTimeStamp, serverResponseTimeStamp, clientReceiveTimeStamp);
|
|
|
|
serverResponseTimeStamp.shift();
|
|
serverResponseTimeStamp.shift();
|
|
serverResponseTimeStamp.shift();
|
|
serverResponseTimeStamp.shift();
|
|
clientReceiveTimeStamp.shift();
|
|
clientReceiveTimeStamp.shift();
|
|
clientReceiveTimeStamp.shift();
|
|
clientReceiveTimeStamp.shift();
|
|
- var diff = 0;
|
|
|
|
- for (var i = 0; i < clientSendTimeStamp.length; i++) {
|
|
|
|
|
|
+ let diff = 0;
|
|
|
|
+ for (let i = 0; i < clientSendTimeStamp.length; i++) {
|
|
diff += (clientReceiveTimeStamp[i] - clientSendTimeStamp[i]) - (serverResponseTimeStamp[i].split(",")[1] - serverResponseTimeStamp[i].split(",")[0]);
|
|
diff += (clientReceiveTimeStamp[i] - clientSendTimeStamp[i]) - (serverResponseTimeStamp[i].split(",")[1] - serverResponseTimeStamp[i].split(",")[0]);
|
|
}
|
|
}
|
|
$("#ping").text(Math.round((diff / clientSendTimeStamp.length) * 100) / 100);
|
|
$("#ping").text(Math.round((diff / clientSendTimeStamp.length) * 100) / 100);
|
|
@@ -176,31 +174,19 @@
|
|
return wsControlEndpoint;
|
|
return wsControlEndpoint;
|
|
}
|
|
}
|
|
|
|
|
|
- //https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript
|
|
|
|
- function rnd(length) {
|
|
|
|
- var result = '';
|
|
|
|
- var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
|
- var charactersLength = characters.length;
|
|
|
|
- for (var i = 0; i < length; i++) {
|
|
|
|
- result += characters.charAt(Math.floor(Math.random() *
|
|
|
|
- charactersLength));
|
|
|
|
- }
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
//https://stackoverflow.com/questions/15900485/correct-way-to-convert-size-in-bytes-to-kb-mb-gb-in-javascript
|
|
//https://stackoverflow.com/questions/15900485/correct-way-to-convert-size-in-bytes-to-kb-mb-gb-in-javascript
|
|
function bytesToSize(bytes) {
|
|
function bytesToSize(bytes) {
|
|
- var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
|
|
|
|
|
+ let sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
|
if (bytes == 0) return '0 Byte';
|
|
if (bytes == 0) return '0 Byte';
|
|
- var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
|
|
|
|
|
|
+ let i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
|
|
return Math.round((bytes / Math.pow(1024, i)) * 100, 3) / 100 + ' ' + sizes[i];
|
|
return Math.round((bytes / Math.pow(1024, i)) * 100, 3) / 100 + ' ' + sizes[i];
|
|
}
|
|
}
|
|
|
|
|
|
function bytesToSpeed(bytes) {
|
|
function bytesToSpeed(bytes) {
|
|
bytes = bytes * 8;
|
|
bytes = bytes * 8;
|
|
- var sizes = ['bps', 'Kbps', 'Mbps', 'Gbps', 'Tbps'];
|
|
|
|
|
|
+ let sizes = ['bps', 'Kbps', 'Mbps', 'Gbps', 'Tbps'];
|
|
if (bytes == 0) return '0 Byte';
|
|
if (bytes == 0) return '0 Byte';
|
|
- var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1000)));
|
|
|
|
|
|
+ let i = parseInt(Math.floor(Math.log(bytes) / Math.log(1000)));
|
|
return Math.round((bytes / Math.pow(1000, i)) * 100, 3) / 100 + ' ' + sizes[i];
|
|
return Math.round((bytes / Math.pow(1000, i)) * 100, 3) / 100 + ' ' + sizes[i];
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|