/* eslint-disable react-hooks/exhaustive-deps */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { differenceInSeconds, parseISO } from "date-fns"; import ky from "ky"; import { useEffect, useState } from "react"; import QRCode from "react-qr-code"; function MonitoringPage() { const [sessions, setSessions] = useState([]); const [servers, setServers] = useState([]); async function getSessionServers() { const response = await ky .get(`${import.meta.env.VITE_COORD_URL}/session_servers`) .json(); setServers(response); setTimeout(() => { getSessionServers(); }, 1000); } async function getActiveSessions() { const response = await ky .get(`${import.meta.env.VITE_COORD_URL}/active_sessions`) .json(); setSessions(response); setTimeout(() => { getActiveSessions(); }, 1000); } async function endActiveSession( location: string, server: string, uePort: number, cirrusPort: number ) { await ky .get( `${ import.meta.env.VITE_COORD_URL }/end?location=${location}&server=${server}&uePort=${uePort}&cirrusPort=${cirrusPort}` ) .json(); } useEffect(() => { getActiveSessions(); getSessionServers(); }, []); return (
{servers.map((server: any) => (
{differenceInSeconds(new Date(), parseISO(server.updatedAt)) >= 10 ? (

Не в сети

) : (

В сети

)}

Локация: "{server.location}"

Имя сервера: "{server.name}"

Лимит процессов: {server.limit_process}

CPU: {server.cpu}

RAM: {server.ram}

GPU: {server.gpu?.map((item: any, index: number) => ( {item} {index === 2 && "°C"} ))}

))} {sessions.map((session: any) => (

Локация: "{session.location}"

Сервер: "{session.server}"

Сборка: "{session.title}"

Порт: {session.cirrusPort}

Пользователи: {session.connectedPlayersCount || 0}

Время запуска: {new Date(session.createdAt).toLocaleString()}

Открыть в новом окне
))}
); } export default MonitoringPage;