Skip to content

Instantly share code, notes, and snippets.

@VinayaSathyanarayana
Forked from debloper/bandwidth.js
Created August 8, 2018 12:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save VinayaSathyanarayana/f9878099270ad72975309632331fd500 to your computer and use it in GitHub Desktop.
Save VinayaSathyanarayana/f9878099270ad72975309632331fd500 to your computer and use it in GitHub Desktop.
Determine client's connection speed with JavaScript
// Let's initialize the primitives
var startTime, endTime, fileSize;
// Set up the AJAX to perform
var xhr = new XMLHttpRequest();
// Rig the call-back... THE important part
xhr.onreadystatechange = function () {
// we only need to know when the request has completed
if (xhr.readyState === 4 && xhr.status === 200) {
// Here we stop the timer & register end time
endTime = (new Date()).getTime();
// Also, calculate the file-size which has transferred
fileSize = xhr.responseText.length;
// Calculate the connection-speed
var speed = (fileSize * 8) / ((endTime - startTime)/1000) / 1024;
// Report the result, or have fries with it...
console.log(speed + " Kbps\n");
}
}
// Snap back; here's where we start the timer
startTime = (new Date()).getTime();
// All set, let's hit it!
xhr.open("GET", "URL/TO/PROBE.FILE", true);
xhr.send();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment