From aaf4943fa37ad1b6f290ea88735444a54d6e1536 Mon Sep 17 00:00:00 2001 From: Panayiotis Lipiridis Date: Sun, 7 Feb 2021 15:51:12 +0200 Subject: [PATCH] Average speed --- src/networkStats.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/networkStats.ts b/src/networkStats.ts index b5f8869a1..ff1ea3093 100644 --- a/src/networkStats.ts +++ b/src/networkStats.ts @@ -1,5 +1,19 @@ const IMAGE_URL = `${process.env.REACT_APP_SOCKET_SERVER_URL}/test256.png`; const IMAGE_SIZE_BITS = 141978 * 8; +const AVERAGE_MAX = 4; + +const speedHistory: number[] = []; + +const pushSpeed = (speed: number): void => { + speedHistory.push(speed); + if (speedHistory.length > AVERAGE_MAX) { + speedHistory.shift(); + } +}; + +const getAverageSpeed = (): number => { + return speedHistory.reduce((a, b) => a + b) / speedHistory.length; +}; const getSpeedBits = ( imageSize: number, @@ -20,7 +34,8 @@ const processImage = (): Promise => { image.onload = () => { endTime = new Date().getTime(); const speed = getSpeedBits(IMAGE_SIZE_BITS, startTime, endTime); - resolve(speed); + pushSpeed(speed); + resolve(getAverageSpeed()); }; image.onerror = () => { @@ -31,6 +46,7 @@ const processImage = (): Promise => { image.src = `${IMAGE_URL}?t=${startTime}`; }); }; + export const getNetworkSpeed = async (): Promise => { return await processImage(); };