From 3c9192ab3a9027682718479bad62d37701675a74 Mon Sep 17 00:00:00 2001 From: Vinzenz Schroeter Date: Sun, 7 Apr 2024 21:09:52 +0200 Subject: [PATCH] show status of sockets independently --- tank-frontend/src/ClientScreen.tsx | 14 ++------ tank-frontend/src/Controls.tsx | 35 +++++++++++-------- tank-frontend/src/statusTextForReadyState.tsx | 9 +++++ 3 files changed, 32 insertions(+), 26 deletions(-) create mode 100644 tank-frontend/src/statusTextForReadyState.tsx diff --git a/tank-frontend/src/ClientScreen.tsx b/tank-frontend/src/ClientScreen.tsx index 2e5d36e..3386524 100644 --- a/tank-frontend/src/ClientScreen.tsx +++ b/tank-frontend/src/ClientScreen.tsx @@ -1,6 +1,7 @@ -import useWebSocket, {ReadyState} from 'react-use-websocket'; +import useWebSocket from 'react-use-websocket'; import {useEffect, useRef} from 'react'; import './ClientScreen.css'; +import {statusTextForReadyState} from './statusTextForReadyState.tsx'; const pixelsPerRow = 352; const pixelsPerCol = 160; @@ -47,7 +48,6 @@ function drawPixelsToCanvas(pixels: Uint8Array, canvas: HTMLCanvasElement) { drawContext.putImageData(imageData, 0, 0); } - export default function ClientScreen({}: {}) { const canvasRef = useRef(null); @@ -74,16 +74,8 @@ export default function ClientScreen({}: {}) { sendMessage(''); }, [lastMessage, canvasRef.current]); - const connectionStatus = { - [ReadyState.CONNECTING]: 'Connecting', - [ReadyState.OPEN]: 'Open', - [ReadyState.CLOSING]: 'Closing', - [ReadyState.CLOSED]: 'Closed', - [ReadyState.UNINSTANTIATED]: 'Uninstantiated', - }[readyState]; - return <> - The WebSocket is currently {connectionStatus} + The screen is currently {statusTextForReadyState[readyState]} ; } diff --git a/tank-frontend/src/Controls.tsx b/tank-frontend/src/Controls.tsx index 5e72fc4..2e30aab 100644 --- a/tank-frontend/src/Controls.tsx +++ b/tank-frontend/src/Controls.tsx @@ -1,6 +1,7 @@ import './Controls.css'; import useWebSocket from 'react-use-websocket'; import {useEffect} from 'react'; +import {statusTextForReadyState} from './statusTextForReadyState.tsx'; export default function Controls({playerId}: { playerId: string @@ -9,7 +10,8 @@ export default function Controls({playerId}: { url.searchParams.set('playerId', playerId); const { sendMessage, - getWebSocket + getWebSocket, + readyState } = useWebSocket(url.toString(), { shouldReconnect: () => true, }); @@ -56,21 +58,24 @@ export default function Controls({playerId}: { }; }, [sendMessage]); - return
-
-
- + return <> + The controller is currently {statusTextForReadyState[readyState]} +
+
+
+ +
+
+ + + +
+

Move

-
- - - +
+ Space +

Fire

-

Move

-
- Space -

Fire

-
-
; + ; } diff --git a/tank-frontend/src/statusTextForReadyState.tsx b/tank-frontend/src/statusTextForReadyState.tsx new file mode 100644 index 0000000..24044de --- /dev/null +++ b/tank-frontend/src/statusTextForReadyState.tsx @@ -0,0 +1,9 @@ +import {ReadyState} from 'react-use-websocket'; + +export const statusTextForReadyState = { + [ReadyState.CONNECTING]: 'Connecting', + [ReadyState.OPEN]: 'Open', + [ReadyState.CLOSING]: 'Closing', + [ReadyState.CLOSED]: 'Closed', + [ReadyState.UNINSTANTIATED]: 'Uninstantiated', +};