mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 08:09:19 +00:00
57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
import os from 'os';
|
|
|
|
let lastBytesReceived = 0;
|
|
let lastBytesSent = 0;
|
|
let lastTimestamp = Date.now();
|
|
|
|
function getNetworkStats() {
|
|
const networkInterfaces = os.networkInterfaces();
|
|
let bytesReceived = 0;
|
|
let bytesSent = 0;
|
|
|
|
// 累加所有网络接口的数据
|
|
Object.values(networkInterfaces).forEach(interfaces => {
|
|
interfaces.forEach(netInterface => {
|
|
if (netInterface.internal === false) {
|
|
bytesReceived += netInterface.bytes_received || 0;
|
|
bytesSent += netInterface.bytes_sent || 0;
|
|
}
|
|
});
|
|
});
|
|
|
|
const now = Date.now();
|
|
const timeDiff = (now - lastTimestamp) / 1000; // 转换为秒
|
|
|
|
// 计算速率(字节/秒)
|
|
const downloadSpeed = (bytesReceived - lastBytesReceived) / timeDiff;
|
|
const uploadSpeed = (bytesSent - lastBytesSent) / timeDiff;
|
|
|
|
// 更新上次的值
|
|
lastBytesReceived = bytesReceived;
|
|
lastBytesSent = bytesSent;
|
|
lastTimestamp = now;
|
|
|
|
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
|
|
timestamp: now
|
|
};
|
|
}
|
|
|
|
export async function GET() {
|
|
try {
|
|
const stats = getNetworkStats();
|
|
return new Response(JSON.stringify(stats), {
|
|
status: 200,
|
|
headers: { 'Content-Type': 'application/json' },
|
|
});
|
|
} catch (error) {
|
|
return new Response(JSON.stringify({ error: error.message }), {
|
|
status: 500,
|
|
headers: { 'Content-Type': 'application/json' },
|
|
})
|
|
}
|
|
}
|