Created
June 9, 2021 05:41
-
-
Save borankux/0f10b50d4feb84665cc8526fe5f1ed2a to your computer and use it in GitHub Desktop.
netspeed detection on front end
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//JUST AN EXAMPLE, PLEASE USE YOUR OWN PICTURE! | |
var imageAddr = "http://www.kenrockwell.com/contax/images/g2/examples/31120037-5mb.jpg"; | |
var downloadSize = 4995374; //bytes | |
function ShowProgressMessage(msg) { | |
if (console) { | |
if (typeof msg == "string") { | |
console.log(msg); | |
} else { | |
for (var i = 0; i < msg.length; i++) { | |
console.log(msg[i]); | |
} | |
} | |
} | |
var oProgress = document.getElementById("progress"); | |
if (oProgress) { | |
var actualHTML = (typeof msg == "string") ? msg : msg.join("<br />"); | |
oProgress.innerHTML = actualHTML; | |
} | |
} | |
function InitiateSpeedDetection() { | |
ShowProgressMessage("Loading the image, please wait..."); | |
window.setTimeout(MeasureConnectionSpeed, 1); | |
}; | |
if (window.addEventListener) { | |
window.addEventListener('load', InitiateSpeedDetection, false); | |
} else if (window.attachEvent) { | |
window.attachEvent('onload', InitiateSpeedDetection); | |
} | |
function MeasureConnectionSpeed() { | |
var startTime, endTime; | |
var download = new Image(); | |
download.onload = function () { | |
endTime = (new Date()).getTime(); | |
showResults(); | |
} | |
download.onerror = function (err, msg) { | |
ShowProgressMessage("Invalid image, or error downloading"); | |
} | |
startTime = (new Date()).getTime(); | |
var cacheBuster = "?nnn=" + startTime; | |
download.src = imageAddr + cacheBuster; | |
function showResults() { | |
var duration = (endTime - startTime) / 1000; | |
var bitsLoaded = downloadSize * 8; | |
var speedBps = (bitsLoaded / duration).toFixed(2); | |
var speedKbps = (speedBps / 1024).toFixed(2); | |
var speedMbps = (speedKbps / 1024).toFixed(2); | |
ShowProgressMessage([ | |
"Your connection speed is:", | |
speedBps + " bps", | |
speedKbps + " kbps", | |
speedMbps + " Mbps" | |
]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment