36 lines
1.5 KiB
JavaScript
36 lines
1.5 KiB
JavaScript
//http://stackoverflow.com/questions/4583395/calculate-speed-using-javascript
|
|
/*
|
|
this is only download estimation, obviously, in peer2peer default deployment, you will
|
|
have full mesh, n*times both upstream and donwstream stream comming to you (which is bad,
|
|
but unless you have a server in between this is what it is). Remark: simetrical upstream/downstream
|
|
is not common in DSL deplyoment, where downstream bandwith is much higher.
|
|
*/
|
|
var BANDWITDH = (function(){
|
|
var imageAddr;
|
|
var size;
|
|
var startTime, endTime;
|
|
var downloadSize;
|
|
var download = new Image();
|
|
|
|
return {
|
|
/*
|
|
don't forget to change the address every time you make a request to avoid browser caching.
|
|
For a demo, I will be using the same as in the stackoverflow example
|
|
*/
|
|
init: function(callback, address, size){
|
|
imageAddr = address !== undefined ? address : "http://www.tranquilmusic.ca/images/cats/Cat2.JPG" + "?n=" + Math.random();
|
|
downloadSize = size !== undefined ? size : 5616998;
|
|
startTime = (new Date()).getTime();
|
|
download.src = imageAddr;
|
|
download.onload = function() {
|
|
endTime = (new Date()).getTime();
|
|
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);
|
|
callback(speedMbps);
|
|
}
|
|
},
|
|
}
|
|
})(); |