Skip to content

Commit 394ac5c

Browse files
authored
Merge pull request #3 from ferrumc-rs/feature/cpu-details
Add CPU details and player count from WebSocket handshake
2 parents 547b8cb + ec6156b commit 394ac5c

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

src/lib/stores/telemetry.svelte.ts

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ export interface TelemetryData {
1616
ramUsage: number;
1717
totalRam: number;
1818
cpuUsage: number;
19+
cpuModel: string;
20+
cpuCores: number;
21+
cpuThreads: number;
1922
uptime: number;
2023
onlinePlayers: number;
2124
maxPlayers: number;
@@ -45,9 +48,12 @@ function createTelemetryStore() {
4548
ramUsage: 0,
4649
totalRam: 0,
4750
cpuUsage: 0,
51+
cpuModel: 'Unknown',
52+
cpuCores: 0,
53+
cpuThreads: 0,
4854
uptime: 0,
4955
onlinePlayers: 0,
50-
maxPlayers: 100,
56+
maxPlayers: 0,
5157
tps: 20,
5258
storageUsed: undefined,
5359
tpsHistory: []
@@ -92,7 +98,10 @@ function createTelemetryStore() {
9298
socket.onmessage = (event) => {
9399
try {
94100
const payload = JSON.parse(event.data);
95-
if (payload.type === 'Metric') {
101+
if (payload.type === 'Handshake') {
102+
// Handshake: one-time system info and config
103+
updateHandshake(payload.data);
104+
} else if (payload.type === 'Metric') {
96105
updateMetrics(payload.data);
97106
}
98107
} catch (e) {
@@ -113,13 +122,44 @@ function createTelemetryStore() {
113122
};
114123
}
115124

125+
function updateHandshake(data: {
126+
system?: {
127+
cpu_model?: string;
128+
cpu_cores?: number;
129+
cpu_threads?: number;
130+
};
131+
config?: {
132+
max_players?: number;
133+
};
134+
}) {
135+
// System info
136+
if (data.system) {
137+
if (data.system.cpu_model !== undefined) {
138+
state.data.cpuModel = data.system.cpu_model;
139+
}
140+
if (data.system.cpu_cores !== undefined) {
141+
state.data.cpuCores = data.system.cpu_cores;
142+
}
143+
if (data.system.cpu_threads !== undefined) {
144+
state.data.cpuThreads = data.system.cpu_threads;
145+
}
146+
}
147+
// Config
148+
if (data.config) {
149+
if (data.config.max_players !== undefined) {
150+
state.data.maxPlayers = data.config.max_players;
151+
}
152+
}
153+
}
154+
116155
function updateMetrics(data: {
117156
ram_usage?: number;
118157
total_ram?: number;
119158
cpu_usage?: number;
120159
uptime?: number;
121160
online_players?: number;
122161
max_players?: number;
162+
player_count?: number;
123163
tps?: number;
124164
storage_used?: number;
125165
disk_type?: string;
@@ -136,6 +176,9 @@ function createTelemetryStore() {
136176
if (data.uptime !== undefined) {
137177
state.data.uptime = data.uptime;
138178
}
179+
if (data.player_count !== undefined) {
180+
state.data.onlinePlayers = data.player_count;
181+
}
139182
if (data.online_players !== undefined) {
140183
state.data.onlinePlayers = data.online_players;
141184
}

src/routes/+page.svelte

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,12 @@
284284
style="width: {cpuPercent}%"
285285
></div>
286286
</div>
287-
<p class="text-xs text-muted-foreground">System CPU</p>
287+
<p class="text-xs text-muted-foreground truncate" title={telemetry.data.cpuModel}>
288+
{telemetry.data.cpuModel}
289+
</p>
290+
<p class="text-xs text-muted-foreground/70">
291+
{telemetry.data.cpuCores} cores / {telemetry.data.cpuThreads} threads
292+
</p>
288293
</div>
289294

290295
<!-- RAM Detail -->

0 commit comments

Comments
 (0)