Determination of channel speed
-
Maybe who knows what the principle for determining the speed of the Internet channel through services, for example, 2ip is remote. For example, there's a login pass and you need to check the Internet service 2ip speed - what principle?
-
Incoming traffic:
- Locking time.
- We're downloading a known size file.
- Look how long it took.
Ongoing traffic:
- Locking time.
- We're rolling known size file on the server.
- Look how long it took.
Скорость = Размер / Время
P.S.: Rapidly applied expedient test (be afraid of bath )
<html> <body> <div> <div>Исходящая скорость: <span id="out">0</span> <a href = "javascript: test_out(); false;">Тест</a> </div> </div> <div style = "display: none;"> <iframe id = "frame"> </iframe> </div> </body> <script type="text/javascript"> function test_out(){ var size = ( 1 * 1024 * 1024 ), //1 Мегабайт start = 0, interval = 0, data = [];
//Получаем строку в 1 мегабайт for ( i = 0; i < size; i++ ) data.push("s"); var doc = document.getElementById('frame').contentDocument; doc.body.innerHTML = '' + '<form action = "http://ya.ru" method = "POST">' + '<textarea name = "tmp">' + data.join('') + '</textarea>' + '</form>'; //Засекаем время старта start = (new Date()).getTime(); //Отправляем форму doc.forms[0].submit(); //Раз в 10 мс проверяем что страничка загрузилась interval = setInterval( function(){ //Если страничка загрузилась, то из-за отличий в доменах //нам не будет доступен iframe.document if ( document.getElementById('frame').contentDocument === undefined ){ var time = (new Date()).getTime() - start; //В мс var speed = ( size / time ) * 1000; document.getElementById('out').innerHTML = Math.ceil( speed ) + ' Байт/Сек'; clearInterval( interval ); } }, 10); }
</script>
</html>