AS3: расчет текущей скорости загрузки (или пропускной способности)

StackOverflow https://stackoverflow.com/questions/3136058

Вопрос

Я загружаю файлы с помощью метода загрузки () класса FileReference. Я хочу отобразить текущую скорость подключения, и мне было интересно, каков был хороший способ сделать это.

Моя текущая техника - использовать таймер каждые 1 мили второй, такой как следует:

var speed:Function = function(event:TimerEvent):void {
    speed = Math.round((currentBytes - lastBytes) / 1024);
    lastBytes = currentBytes;
}
var speedTimer:Timer = new Timer(1000);
speedTimer.addEventListener(TimerEvent.TIMER, uploadSpeed);

и quotbytes устанавливается в ProgressEvent.progress. Эта техника кажется неточностью. Мне было интересно, какие еще могут использовать другие способы, чтобы рассчитать скорость загрузки при загрузке и отображении ее в режиме реального времени.

Любые идеи или мнения приветствуются!

Спасибо большое,

Rudy.

Это было полезно?

Решение

Если этот код кода является копией и вставьте, безусловно, не будет работать, как вы ожидали. Вы объявляете speed как функция, в которой вы отображаетесь, чтобы переопределить его как номер. Я ценю Flash IDE, давайте уйдем с схематической грамматикой, но код, как это приведет вас во все виды неприятностей. Постарайтесь быть явным при записи вашего кода.

Попробуйте что-то вроде этого, замена yourLoader С каким бы ни был идентификатор, который вы присваиваете загрузчику:

private var speed:Number = 0;
private var lastBytes:uint = 0;

private function uploadSpeed(event:TimerEvent):void
{
   speed = Math.round((yourLoader.currentBytes - lastBytes) / 1024);
   lastBytes = yourLoader.currentBytes;
}

private var speedTimer:Timer = new Timer(1000);
speedTimer.addEventListener(TimerEvent.TIMER, uploadSpeed);

Это должно рассчитать, сколько байтов перемещено в 1 секунда интервалы.

Редактировать:

Вы можете сделать интервал чуть меньше 1000 мс и рассчитать среднюю скорость для вашего последнего N. Образцы. Это сделало бы номер, который ваш пользователь виден, кажется более стабильным, чем наверное, сейчас делает прямо сейчас. Сделать скорость АН Array а также .push() последний образец. Использовать .shift() Чтобы бросить самые старые образцы, чтобы вы не теряете слишком много точности. Проб и ошибка даст вам лучшее представление о том, сколько образцов удержания и как часто их взять.

Другие советы

Вы можете мониторировать скорость загрузки на сервере, а затем отправлять эти данные обратно клиенту. Эта техника часто используется для форм загрузки файлов AJAX.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top