Domanda

sto caricando file utilizzando il metodo di caricamento () della classe FileReference. Voglio visualizzare la velocità di connessione in corso e mi chiedevo cosa è stato un buon modo per farlo.

La mia tecnica attuale è quella di utilizzare un timer ogni 1 mili secondo come segue:

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);

e currentBytes viene impostata nel ProgressEvent.PROGRESS. Questa tecnica sembra impreciso. Mi chiedevo che cosa gli altri modi che potrebbero usare per calcolare la velocità di upload durante il caricamento e la visualizzazione in tempo reale.

Tutte le idee o opinioni sono accolti!

La ringrazio molto,

Rudy

È stato utile?

Soluzione

Se questo blocco di codice è una copia e incolla di certo non funzionerà come avete aspettato a. Dichiarate speed come una funzione all'interno del quale sembrate a ridefinire come un numero. Apprezzo vi farla franca con la grammatica abbozzato l'IDE Flash lasciare, ma il codice del genere sta per portare voi in tutti i tipi di problemi. Cercate di essere esplicito quando si scrive il codice.

Prova qualcosa di simile, sostituendo yourLoader con qualsiasi identificativo assegnato al Uploader:

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);

che dovrebbe calcolare quanti byte spostati in 1 secondo gli intervalli.

Modifica:

Come si potrebbe rendere l'intervallo di un po 'più piccola di 1000 ms e calcolare una velocità media per la vostra ultima n campioni. Ciò renderebbe il numero gli utenti vedono apparire più stabile di quanto non lo fa probabilmente in questo momento. Fai la velocità di un Array e .push() l'ultimo campione. Utilizzare .shift() far cadere i campioni più antichi in modo che non si perde troppo la precisione. Tentativi ed errori vi darà una migliore idea di quanti campioni da tenere e la frequenza di prenderli.

Altri suggerimenti

È possibile monitorare la velocità di upload sul server e quindi inviare di nuovo che i dati al client. Questa tecnica è spesso usato per le forme di upload di file Ajax.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top