mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 16:19:18 +00:00
🐞 fix: 修复网络上下行没有正确处理累计值的重置问题
This commit is contained in:
parent
5c382c8a24
commit
a5028f9c71
@ -5,6 +5,7 @@ import si from 'systeminformation';
|
|||||||
let lastBytesReceived = 0;
|
let lastBytesReceived = 0;
|
||||||
let lastBytesSent = 0;
|
let lastBytesSent = 0;
|
||||||
let lastTimestamp = Date.now();
|
let lastTimestamp = Date.now();
|
||||||
|
let isFirstRun = true;
|
||||||
|
|
||||||
async function getLinuxStats() {
|
async function getLinuxStats() {
|
||||||
const data = await fs.readFile('/proc/net/dev', 'utf8');
|
const data = await fs.readFile('/proc/net/dev', 'utf8');
|
||||||
@ -58,18 +59,33 @@ async function getNetworkStats() {
|
|||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const timeDiff = (now - lastTimestamp) / 1000;
|
const timeDiff = (now - lastTimestamp) / 1000;
|
||||||
|
|
||||||
const downloadSpeed = Math.max(0, (bytesReceived - lastBytesReceived) / timeDiff);
|
let downloadSpeed = 0;
|
||||||
const uploadSpeed = Math.max(0, (bytesSent - lastBytesSent) / timeDiff);
|
let uploadSpeed = 0;
|
||||||
|
|
||||||
|
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;
|
lastBytesReceived = bytesReceived;
|
||||||
lastBytesSent = bytesSent;
|
lastBytesSent = bytesSent;
|
||||||
lastTimestamp = now;
|
lastTimestamp = now;
|
||||||
|
isFirstRun = false;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
downloadSpeed: (downloadSpeed / 1024).toFixed(2),
|
downloadSpeed: (downloadSpeed / 1024).toFixed(2), // KB/s
|
||||||
uploadSpeed: (uploadSpeed / 1024).toFixed(2),
|
uploadSpeed: (uploadSpeed / 1024).toFixed(2), // KB/s
|
||||||
totalReceived: (bytesReceived / (1024 * 1024 * 1024)).toFixed(2),
|
totalReceived: (bytesReceived / (1024 * 1024 * 1024)).toFixed(2), // GB
|
||||||
totalSent: (bytesSent / (1024 * 1024 * 1024)).toFixed(2),
|
totalSent: (bytesSent / (1024 * 1024 * 1024)).toFixed(2), // GB
|
||||||
timestamp: now
|
timestamp: now
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user