From c283f41fb4aab49feff6c1f3d2b98b9c42fd7a93 Mon Sep 17 00:00:00 2001 From: zhiyu1998 <542716863@qq.com> Date: Sat, 23 Nov 2024 00:16:16 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9Efix=EF=BC=9A=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=BC=82=E5=B8=B8=E5=80=BC=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app/r/api/network2/route.js | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/server/app/r/api/network2/route.js b/server/app/r/api/network2/route.js index 1b96685..a3b5fd3 100644 --- a/server/app/r/api/network2/route.js +++ b/server/app/r/api/network2/route.js @@ -5,7 +5,6 @@ import si from 'systeminformation'; let lastBytesReceived = 0; let lastBytesSent = 0; let lastTimestamp = Date.now(); -let isFirstRun = true; async function getLinuxStats() { const data = await fs.readFile('/proc/net/dev', 'utf8'); @@ -59,33 +58,18 @@ async function getNetworkStats() { const now = Date.now(); const timeDiff = (now - lastTimestamp) / 1000; - let downloadSpeed = 0; - let uploadSpeed = 0; + const downloadSpeed = Math.max(0, (bytesReceived - lastBytesReceived) / timeDiff); + const uploadSpeed = Math.max(0, (bytesSent - lastBytesSent) / timeDiff); - if (!isFirstRun) { - // 检查是否发生了计数器重置或异常值 - if (bytesReceived >= lastBytesReceived && bytesSent >= lastBytesSent) { - downloadSpeed = (bytesReceived - lastBytesReceived) / timeDiff; - uploadSpeed = (bytesSent - lastBytesSent) / timeDiff; - - // 设置合理的上限值(比如 1GB/s) - const MAX_SPEED = 1024 * 1024 * 1024; // 1 GB/s - downloadSpeed = Math.min(downloadSpeed, MAX_SPEED); - uploadSpeed = Math.min(uploadSpeed, MAX_SPEED); - } - } - - // 更新状态 lastBytesReceived = bytesReceived; lastBytesSent = bytesSent; lastTimestamp = now; - isFirstRun = false; return { - downloadSpeed: (downloadSpeed / 1024).toFixed(2), // KB/s - uploadSpeed: (uploadSpeed / 1024).toFixed(2), // KB/s - totalReceived: (bytesReceived / (1024 * 1024 * 1024)).toFixed(2), // GB - totalSent: (bytesSent / (1024 * 1024 * 1024)).toFixed(2), // GB + downloadSpeed: (downloadSpeed / 1024).toFixed(2), + uploadSpeed: (uploadSpeed / 1024).toFixed(2), + totalReceived: (bytesReceived / (1024 * 1024 * 1024)).toFixed(2), + totalSent: (bytesSent / (1024 * 1024 * 1024)).toFixed(2), timestamp: now }; } catch (error) {