Skip to content

Instantly share code, notes, and snippets.

@nhobi
Last active May 6, 2021 22:59
Show Gist options
  • Save nhobi/5ec2c9d0889e1d1cdd47dc6ae7ca4ee0 to your computer and use it in GitHub Desktop.
Save nhobi/5ec2c9d0889e1d1cdd47dc6ae7ca4ee0 to your computer and use it in GitHub Desktop.
Calculates the download speed of your current network based on an image fixture.
export default () => {
return new Promise((resolve, reject) => {
let imageAddr =
"https://nhmisc.s3.amazonaws.com/liswall/stub.jpg" +
"?n=" +
Math.random();
let startTime, endTime;
let downloadSize = 1025385;
let download = new Image();
download.onload = function() {
endTime = new Date().getTime();
calculate();
};
startTime = new Date().getTime();
download.src = imageAddr;
let calculate = () => {
let duration = (endTime - startTime) / 1000;
let bitsLoaded = downloadSize * 8;
let speedBps = Math.round(bitsLoaded / duration);
let speedKbps = (speedBps / 1024).toFixed(2);
let speedMbps = (speedKbps / 1024).toFixed(2);
resolve(+speedMbps);
}
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment