v1.0.0
This commit is contained in:
70
server.js
Normal file
70
server.js
Normal file
@ -0,0 +1,70 @@
|
||||
const { Server } = require("socket.io");
|
||||
const http = require("http");
|
||||
const os = require("os");
|
||||
|
||||
const server = http.createServer();
|
||||
const io = new Server(server, {
|
||||
cors: {
|
||||
origin: "*", // 允许所有来源访问
|
||||
},
|
||||
});
|
||||
|
||||
function calculateCpuUsage(startCpus, endCpus) {
|
||||
const usagePercentages = [];
|
||||
|
||||
for (let i = 0; i < startCpus.length; i++) {
|
||||
const start = startCpus[i].times;
|
||||
const end = endCpus[i].times;
|
||||
|
||||
const idleDiff = end.idle - start.idle;
|
||||
const totalStart = Object.values(start).reduce((a, b) => a + b, 0);
|
||||
const totalEnd = Object.values(end).reduce((a, b) => a + b, 0);
|
||||
const totalDiff = totalEnd - totalStart;
|
||||
|
||||
const usage = totalDiff === 0 ? 0 : (1 - idleDiff / totalDiff) * 100;
|
||||
usagePercentages.push(+usage.toFixed(1));
|
||||
}
|
||||
|
||||
return usagePercentages;
|
||||
}
|
||||
|
||||
function getSystemInfo(prevCpuInfo) {
|
||||
const currentCpuInfo = os.cpus();
|
||||
const perCpuUsage = calculateCpuUsage(prevCpuInfo, currentCpuInfo);
|
||||
|
||||
return {
|
||||
totalmem: os.totalmem(),
|
||||
freemem: os.freemem(),
|
||||
loadavg: os.loadavg(),
|
||||
uptime: os.uptime(),
|
||||
perCpuUsage,
|
||||
currentCpuInfo,
|
||||
};
|
||||
}
|
||||
|
||||
let prevCpuInfo = os.cpus();
|
||||
|
||||
io.on("connection", (socket) => {
|
||||
console.log("客户端连接:", socket.id);
|
||||
|
||||
// 先发一次状态信息
|
||||
const initInfo = getSystemInfo(prevCpuInfo);
|
||||
prevCpuInfo = initInfo.currentCpuInfo;
|
||||
socket.emit("status", initInfo);
|
||||
|
||||
// 定时发送状态信息
|
||||
const interval = setInterval(() => {
|
||||
const info = getSystemInfo(prevCpuInfo);
|
||||
prevCpuInfo = info.currentCpuInfo;
|
||||
socket.emit("status", info);
|
||||
}, 3000);
|
||||
|
||||
socket.on("disconnect", () => {
|
||||
clearInterval(interval);
|
||||
console.log("客户端断开:", socket.id);
|
||||
});
|
||||
});
|
||||
|
||||
server.listen(3001, () => {
|
||||
console.log("Socket.IO 服务运行在 http://localhost:3001");
|
||||
});
|
Reference in New Issue
Block a user