video/comms/webRTC-over-websockets/js/bandwidth.js

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);
}
},
}
})();