-
-
Save debloper/7296289 to your computer and use it in GitHub Desktop.
| // 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; | |
| // N.B: fileSize reports number of Bytes | |
| // Calculate the connection-speed | |
| var speed = fileSize / ((endTime - startTime)/1000) / 1024; | |
| // Use (fileSize * 8) instead of fileSize for kBps instead of kbps | |
| // 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(); |
What are you calculating the connection speed in, Kibibits, Kilobits, etc?
A bit confused by the formula.
What are you calculating the connection speed in, Kibibits, Kilobits, etc?
A bit confused by the formula.
Check line #23
What are you calculating the connection speed in, Kibibits, Kilobits, etc?
A bit confused by the formula.Check line #23
Your units are wrong. KBps is kilobytes per second, but it should be kbps - kilobits per second
fileSize is in Bytes, because length property is number of characters, where each character is 8 bits long = 1 Byte
your formula is:
speed = (fileSize * 8) / ((endTime - startTime)/1000) / 1024
speed = (size in bits) / (time in seconds) / 1024
so it's kilobits/s = kbps, not kilobytes/s = kBps
@ffilopeter you're correct. I've just updated it. Thanks!
@ffilopeter you're correct. I've just updated it. Thanks!
Thanks for the gist. Just a quick heads up: seems like there still is some mix up with the units on lines 22 and 25. Unless I am wrong, it should read like this.
`
// Use (fileSize * 8) instead of fileSize for kbps instead of kBps
// Report the result, or have fries with it...
console.log(speed + " kbps\n");
`
@celsobessa I must have had a brain-fart the last time I tried to "fix" it.
Thanks for pointing it out. How does it look now?
@YashKharel19 <URL/TO/PROBE.FILE> you replace that with file on your server e.g. http://mydomain.tld/foo.img. This script basically check how long the file took to download to the client's browser