diff --git a/backend/lib/minecraft.js b/backend/lib/minecraft.js
index 7569d2c..4a0667a 100644
--- a/backend/lib/minecraft.js
+++ b/backend/lib/minecraft.js
@@ -47,6 +47,10 @@ function formatStatusForClient(modStatus, motdData) {
version: "Unknown",
icon: null,
uptime: "오프라인",
+ tps: 0,
+ mspt: 0,
+ memoryUsedMb: 0,
+ memoryMaxMb: 0,
};
}
@@ -81,6 +85,10 @@ function formatStatusForClient(modStatus, motdData) {
difficulty: modStatus.difficulty || "알 수 없음",
gameRules: modStatus.gameRules || {},
mods: modStatus.mods || [],
+ tps: modStatus.tps || 0,
+ mspt: modStatus.mspt || 0,
+ memoryUsedMb: modStatus.memoryUsedMb || 0,
+ memoryMaxMb: modStatus.memoryMaxMb || 0,
};
}
diff --git a/frontend/src/pages/Admin.jsx b/frontend/src/pages/Admin.jsx
index d1ab11e..30158bb 100644
--- a/frontend/src/pages/Admin.jsx
+++ b/frontend/src/pages/Admin.jsx
@@ -131,11 +131,11 @@ export default function Admin({ isMobile = false }) {
const [whitelistRemoveTarget, setWhitelistRemoveTarget] = useState(null); // 삭제 확인 다이얼로그용
const [whitelistLoading, setWhitelistLoading] = useState(false);
- // 성능 모니터링 상태 (더미)
+ // 성능 모니터링 상태 (소켓에서 업데이트)
const [serverPerformance, setServerPerformance] = useState({
- tps: 19.8,
- cpu: 35.2,
- memory: { used: 2150, max: 4096 },
+ tps: 0,
+ mspt: 0,
+ memory: { used: 0, max: 0 },
});
// 권한 확인
@@ -568,6 +568,17 @@ export default function Admin({ isMobile = false }) {
};
setDifficulty(difficultyMap[status.difficulty] || 'normal');
}
+ // 성능 모니터링 데이터 업데이트
+ if (status?.tps !== undefined || status?.memoryUsedMb !== undefined) {
+ setServerPerformance(prev => ({
+ tps: status.tps ?? prev.tps,
+ mspt: status.mspt ?? prev.mspt,
+ memory: {
+ used: status.memoryUsedMb ?? prev.memory.used,
+ max: status.memoryMaxMb ?? prev.memory.max
+ }
+ }));
+ }
});
// 월드 정보에서 시간/날씨 가져오기
@@ -825,7 +836,7 @@ export default function Admin({ isMobile = false }) {
서버 관리 및 설정