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:

    1. Locking time.
    2. We're downloading a known size file.
    3. Look how long it took.

    Ongoing traffic:

    1. Locking time.
    2. We're rolling known size file on the server.
    3. 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 &lt; size; i++ ) data.push("s");
    
      var doc = document.getElementById('frame').contentDocument;
      doc.body.innerHTML = '' +
        '&lt;form action = "http://ya.ru" method = "POST"&gt;' +
          '&lt;textarea name = "tmp"&gt;' +
            data.join('') +
          '&lt;/textarea&gt;' +
        '&lt;/form&gt;';
      //Засекаем время старта
      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>


Log in to reply
 


Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2