From 7d8cca54e548d2a85287fd2325db88f2697be55a Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Sat, 4 Nov 2023 21:28:11 +0000 Subject: Add more shit --- backend/dist/websocket/game.js | 84 ++++++++++++++++++++++++++++++++++++++ backend/dist/websocket/game.js.map | 1 + 2 files changed, 85 insertions(+) create mode 100644 backend/dist/websocket/game.js create mode 100644 backend/dist/websocket/game.js.map (limited to 'backend/dist/websocket') diff --git a/backend/dist/websocket/game.js b/backend/dist/websocket/game.js new file mode 100644 index 0000000..35d7ad8 --- /dev/null +++ b/backend/dist/websocket/game.js @@ -0,0 +1,84 @@ +import { addSessionClient, getSession, setSessionHost } from "../config/session-store.js"; +import { WebSocketServer } from "ws"; +import { v4 as uuidv4 } from "uuid"; +const wss = new WebSocketServer({ noServer: true }); +const sendToClient = (clientId, message) => { + wss.clients.forEach((client) => { + if (client.clientId === clientId) { + client.send(JSON.stringify(message)); + } + }); +}; +const broadcastToClients = (clientIds, message) => { + wss.clients.forEach((client) => { + if (clientIds.includes(client.clientId)) { + client.send(JSON.stringify(message)); + } + }); +}; +export const createWebsocketServer = (server) => { + server.on("upgrade", (req, socket, head) => { + wss.handleUpgrade(req, socket, head, (ws) => { + wss.emit("connection", ws, req); + }); + }); + wss.on("connection", (ws) => { + 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; + } + sendToClient(session.host, { + action: "state", + state: "playing", + }); + broadcastToClients(session.clients, { + action: "state", + state: "playing", + }); + } + }); + }); + return wss; +}; +export default createWebsocketServer; +//# sourceMappingURL=game.js.map \ No newline at end of file diff --git a/backend/dist/websocket/game.js.map b/backend/dist/websocket/game.js.map new file mode 100644 index 0000000..ef0df87 --- /dev/null +++ b/backend/dist/websocket/game.js.map @@ -0,0 +1 @@ +{"version":3,"file":"game.js","sourceRoot":"","sources":["../../src/websocket/game.ts"],"names":[],"mappings":"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"} \ No newline at end of file -- cgit v1.2.3-70-g09d2