Pregunta

Estoy subiendo archivos utilizando el método de carga () de la clase FileReference. Quiero mostrar la velocidad de conexión actual y Me preguntaba lo que era una buena manera de hacer eso.

Mi técnica actual es utilizar un temporizador cada 1 mili segundo tal como sigue:

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

y currentBytes consigue el sistema en el ProgressEvent.PROGRESS. Esta técnica parece imprecisa. Me preguntaba qué otras maneras en que podrían usar para calcular la velocidad de carga durante la carga y visualización en tiempo real.

Todas las ideas u opiniones son bienvenidas!

Muchas gracias,

Rudy

¿Fue útil?

Solución

Si ese bloque de código es un copiar y pegar desde luego no va a funcionar como usted ha esperado que. Se declara speed como una función dentro de la cual usted aparece a redefinirlo como un número. Aprecio de que se salga con la gramática esquemática el IDE de Flash permitió, sino que un código como que se le va a dar lugar a todo tipo de problemas. Trate de ser explícito al escribir el código.

Prueba algo como esto, en sustitución de yourLoader con cualquier identificador asignado a la subida

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

Esto debe calcular cuántos bytes se movieron en 1 segundo intervalos.

Editar:

Es posible que como para hacer que el intervalo de un poco más pequeño que 1000 ms y calcular una velocidad media correspondiente a la última n muestras. Eso haría que el número de sus usuarios ven aparecer más estable de lo que probablemente hace ahora. Hacer una velocidad Array y .push() la última muestra. Uso .shift() dejar caer las muestras más antiguas de manera que no se pierde demasiada precisión. Ensayo y error le dará una mejor idea de cuántas muestras para sostener y con qué frecuencia debe tomarlos.

Otros consejos

Puede controlar la velocidad de carga en el servidor y luego enviar los datos que volver al cliente. Esta técnica se utiliza a menudo para las formas de carga de archivos ajax.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top