diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2023-11-09 00:17:03 +0000 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2023-11-09 00:17:03 +0000 |
| commit | 1f101fe7cc5cc31c66146a1e226fa4bae805fdd4 (patch) | |
| tree | e1d533f686741bf0c7a446ba8ada1ac66a2051ef /backend/src/websocket/game.ts | |
| parent | 28f705fc4aa2f3c62e7fe7d95557494bedcb8d1c (diff) | |
Refactor websockets
Diffstat (limited to 'backend/src/websocket/game.ts')
| -rw-r--r-- | backend/src/websocket/game.ts | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/backend/src/websocket/game.ts b/backend/src/websocket/game.ts deleted file mode 100644 index c37b1c5..0000000 --- a/backend/src/websocket/game.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Server } from "http"; -import { addSessionClient, getSession, setSessionHost, setSessionState } from "../config/session-store.js"; -import { WebSocketServer } from "ws"; -import { v4 as uuidv4 } from "uuid"; - -const wss = new WebSocketServer({ noServer: true }); - -const sendToClient = (clientId: string, message: any) => { - wss.clients.forEach((client: any) => { - if (client.clientId === clientId) { - client.send(JSON.stringify(message)); - } - }); -}; - -const broadcastToClients = (clientIds: string[], message: any) => { - wss.clients.forEach((client: any) => { - if (clientIds.includes(client.clientId)) { - client.send(JSON.stringify(message)); - } - }); -}; - -export const createWebsocketServer = (server: Server): WebSocketServer => { - server.on("upgrade", (req, socket, head) => { - wss.handleUpgrade(req, socket, head, (ws) => { - wss.emit("connection", ws, req); - }); - }); - - wss.on("connection", (ws: any) => { - ws.clientId = uuidv4(); - - ws.on("message", (message) => { - console.log("received: %s", message); - let data; - try { - data = JSON.parse(message.toString()); - } catch (e) { - console.log("Invalid JSON"); - return; - } - - if (data.action === "host") { - setSessionHost(data.sessionId, ws.clientId); - } else if (data.action === "move") { - const session = getSession(data.sessionId); - if (!session) { - return; - } - - sendToClient(session.host!, { - action: "move", - move: data.move, - }); - } else if (data.action === "join") { - const session = getSession(data.sessionId); - if (!session) { - return; - } - - addSessionClient(data.sessionId, ws.clientId); - - sendToClient(session.host!, { - action: "join", - clients: session.clients.length, - }); - - ws.send(JSON.stringify({ - action: "state", - state: session.state, - })); - } else if (data.action === "start") { - const session = getSession(data.sessionId); - if (!session) { - return; - } - - setSessionState(data.sessionId, "playing"); - - sendToClient(session.host!, { - action: "state", - state: "playing", - }); - - broadcastToClients(session.clients, { - action: "state", - state: "playing", - }); - } - }); - }); - - return wss; -}; - -export default createWebsocketServer; |
