From 0f282fd0037f32fd26789c63c100c111e0d7f7be Mon Sep 17 00:00:00 2001 From: Liam Date: Sun, 13 Oct 2024 04:58:57 +0100 Subject: [PATCH] use a better hook --- bun.lockb | Bin 308312 -> 308696 bytes projects/website/package.json | 1 + .../score/score-feed/score-feed.tsx | 12 +-- projects/website/src/hooks/use-websocket.ts | 79 ------------------ 4 files changed, 7 insertions(+), 85 deletions(-) delete mode 100644 projects/website/src/hooks/use-websocket.ts diff --git a/bun.lockb b/bun.lockb index a5dc9ca90935eb60318a119f14ef0b9cff5f13e7..75b1bb1154fd2a6997b444623462a318164e7ee0 100755 GIT binary patch delta 55222 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 delta 54993 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"wss://scoresaber.com/ws"); + const { readyState, lastJsonMessage } = useWebSocket("wss://scoresaber.com/ws"); const [scores, setScores] = useState([]); useEffect(() => { - if (!message) { + if (!lastJsonMessage) { return; } - const { commandName, commandData } = message; + const { commandName, commandData } = lastJsonMessage; if (commandName !== "score") { return; } @@ -30,9 +30,9 @@ export default function ScoreFeed() { // Newest to oldest return newScores.sort((a, b) => parseDate(b.score.timeSet).getTime() - parseDate(a.score.timeSet).getTime()); }); - }, [message]); + }, [lastJsonMessage]); - if (!connected) { + if (readyState == ReadyState.CONNECTING) { return

Not Connected to the ScoreSaber Websocket :(

; } diff --git a/projects/website/src/hooks/use-websocket.ts b/projects/website/src/hooks/use-websocket.ts deleted file mode 100644 index db10c8a..0000000 --- a/projects/website/src/hooks/use-websocket.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { useEffect, useRef, useState } from "react"; - -/** - * Generic WebSocket hook for connecting and handling WebSocket messages of type T. - * - * @param url - The WebSocket server URL. - * @param reconnectDelay - Optional delay (in milliseconds) before attempting to reconnect (default is 5000ms). - */ -export const useWebSocket = (url: string, reconnectDelay: number = 5000) => { - const [connected, setConnected] = useState(false); - const [message, setMessage] = useState(null); // Store the incoming message of type T - const socketRef = useRef(null); - const reconnectTimeoutRef = useRef(null); - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - }, []); - - useEffect(() => { - if (!mounted) { - return; - } - - const connectWebSocket = () => { - socketRef.current = new WebSocket(url); - - socketRef.current.onopen = () => { - setConnected(true); - }; - - socketRef.current.onmessage = event => { - try { - // Handle incoming messages and store them in state as type T - const messageData: T = JSON.parse(event.data); - setMessage(messageData); - } catch (error) { - console.error("Error parsing WebSocket message:", error); - } - }; - - socketRef.current.onclose = () => { - setConnected(false); - attemptReconnect(); - }; - - socketRef.current.onerror = () => { - socketRef.current?.close(); // Close the socket on error - }; - }; - - const attemptReconnect = () => { - // Clear any existing timeouts to avoid multiple reconnection attempts - if (reconnectTimeoutRef.current) { - clearTimeout(reconnectTimeoutRef.current); - } - // Try reconnecting after the specified delay - reconnectTimeoutRef.current = setTimeout(() => { - connectWebSocket(); - }, reconnectDelay); - }; - - // Initialize WebSocket connection - connectWebSocket(); - - // Cleanup function when component unmounts - return () => { - if (socketRef.current) { - socketRef.current.close(); - socketRef.current = null; - } - if (reconnectTimeoutRef.current) { - clearTimeout(reconnectTimeoutRef.current); - } - }; - }, [mounted, url, reconnectDelay]); - - return { connected, message }; -};