diff --git a/src/main.tsx b/src/main.tsx index 6b7ab3a..d5da5bd 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -7,17 +7,16 @@ import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Toaster } from "sonner"; - const queryClient = new QueryClient(); ReactDOM.createRoot(document.getElementById("root")!).render( - - - - - + + + + + , ); diff --git a/src/pages/Server.tsx b/src/pages/Server.tsx index 5984ab1..e885b72 100644 --- a/src/pages/Server.tsx +++ b/src/pages/Server.tsx @@ -1,11 +1,11 @@ -import useWebSocket from 'react-use-websocket'; -import { NezhaAPIResponse } from "@/types/nezha-api"; -import ServerCard from '@/components/ServerCard'; -import { formatNezhaInfo } from '@/lib/utils'; -import ServerOverview from '@/components/ServerOverview'; +import useWebSocket from "react-use-websocket"; +import { NezhaAPIResponse } from "@/types/nezha-api"; +import ServerCard from "@/components/ServerCard"; +import { formatNezhaInfo } from "@/lib/utils"; +import ServerOverview from "@/components/ServerOverview"; export default function Servers() { - const { lastMessage, readyState } = useWebSocket('/api/v1/ws/server', { + const { lastMessage, readyState } = useWebSocket("/api/v1/ws/server", { shouldReconnect: () => true, // 自动重连 reconnectInterval: 3000, // 重连间隔 }); @@ -16,29 +16,49 @@ export default function Servers() { } // 解析消息 - const nezhaWsData = lastMessage ? JSON.parse(lastMessage.data) as NezhaAPIResponse : null; + const nezhaWsData = lastMessage + ? (JSON.parse(lastMessage.data) as NezhaAPIResponse) + : null; if (!nezhaWsData) { - return

等待数据...

; + return ( +
+

等待数据...

+
+ ); } - // 计算服务器总数和在线数量 - const totalServers = nezhaWsData.servers.length; - const onlineServers = nezhaWsData.servers.filter(server => formatNezhaInfo(server).online).length; - const offlineServers = nezhaWsData.servers.filter(server => !formatNezhaInfo(server).online).length; - const up = nezhaWsData.servers.reduce((total, server) => total + server.state.net_out_transfer, 0); - const down = nezhaWsData.servers.reduce((total, server) => total + server.state.net_in_transfer, 0); + // 计算服务器总数和在线数量 + const totalServers = nezhaWsData.servers.length; + const onlineServers = nezhaWsData.servers.filter( + (server) => formatNezhaInfo(server).online, + ).length; + const offlineServers = nezhaWsData.servers.filter( + (server) => !formatNezhaInfo(server).online, + ).length; + const up = nezhaWsData.servers.reduce( + (total, server) => total + server.state.net_out_transfer, + 0, + ); + const down = nezhaWsData.servers.reduce( + (total, server) => total + server.state.net_in_transfer, + 0, + ); return (
- -
+ +
{nezhaWsData.servers.map((serverInfo) => ( ))}
); -} \ No newline at end of file +} diff --git a/src/types/nezha-api.ts b/src/types/nezha-api.ts index 6546e1a..1686da3 100644 --- a/src/types/nezha-api.ts +++ b/src/types/nezha-api.ts @@ -3,7 +3,6 @@ export interface NezhaAPIResponse { servers: NezhaAPI[]; } - export interface NezhaAPI { id: number; name: string; diff --git a/vite.config.ts b/vite.config.ts index ef849d0..a6839f4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -12,11 +12,11 @@ export default defineConfig({ }, server: { proxy: { - '/api/v1/ws/server': { - target: 'ws://localhost:8080', - changeOrigin: true, - ws: true, - }, - } - } + "/api/v1/ws/server": { + target: "ws://localhost:8080", + changeOrigin: true, + ws: true, + }, + }, + }, });