From a93d21a2e3eedb5de3eb808c73a07decfd9850e5 Mon Sep 17 00:00:00 2001 From: Clifton Palmer Date: Wed, 8 Nov 2023 05:03:06 -0600 Subject: [PATCH 1/1] Updated to 1.1.0 * Added prod backend network * Use session ID when doing board operations --- docker-compose-prod.yml | 12 +++++++++--- docker-compose.yml | 4 ++-- socket/server.js | 14 +++++++++++--- web/static/go.js | 32 +++++++++++++++++++++++++++++++- 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml index d912439..64ca315 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -2,6 +2,8 @@ version: '3' networks: proxy: external: true + backend: + driver: overlay services: db: image: mariadb:11.1.2 @@ -10,13 +12,17 @@ services: MARIADB_DATABASE: go MARIADB_USER: socket MARIADB_PASSWORD: socketpw + networks: + - backend socket: - image: cjpalmer/go-socket:1.0.1 + image: cjpalmer/go-socket:1.1.0 + networks: + - backend web: - image: cjpalmer/go-web:1.0.1 + image: cjpalmer/go-web:1.1.0 environment: - NGINX_HOST=purplebirdman.com - NGINX_PORT=80 networks: - - default + - backend - proxy diff --git a/docker-compose.yml b/docker-compose.yml index 7356cfd..3d27da7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,10 +9,10 @@ services: MARIADB_PASSWORD: socketpw socket: build: ./socket - image: cjpalmer/go-socket:1.0.1 + image: cjpalmer/go-socket:1.1.0 web: build: ./web - image: cjpalmer/go-web:1.0.1 + image: cjpalmer/go-web:1.1.0 environment: - NGINX_HOST=purplebirdman.com - NGINX_PORT=80 diff --git a/socket/server.js b/socket/server.js index 52ce170..cb62184 100644 --- a/socket/server.js +++ b/socket/server.js @@ -41,10 +41,9 @@ app.ws('/ws', async function(ws, req) { var session_id = 0; db.initBoard(); - // send initial message to draw client board + // get session ID ws.send(JSON.stringify({ - "type": "board", - "data": await db.getBoardState(session_id) + "type": "session" })); ws.on('message', async function(msg) { @@ -52,6 +51,15 @@ app.ws('/ws', async function(ws, req) { try { parsed = JSON.parse(msg); switch (parsed.type) { + case "session": + session_id = parsed.data.session + + // send initial message to draw session client board + ws.send(JSON.stringify({ + "type": "board", + "data": await db.getBoardState(session_id) + })); + break; case "new": ws.send(JSON.stringify({ "type": "new", diff --git a/web/static/go.js b/web/static/go.js index 7c417ca..3f9c3d8 100644 --- a/web/static/go.js +++ b/web/static/go.js @@ -20,9 +20,21 @@ var lastY; 1: white 2: black */ -var session = 0; + var playerStone; +/* get session ID from URI if included */ +var session = 0; +var queryString = location.search +let params = new URLSearchParams(queryString) +let url_session = parseInt(params.get("session")) + +if (url_session > 0) +{ + session = url_session +} +console.log("Session ID: " + url_session) + var state = []; for (var i = 0; i < boardSize; i++) { @@ -54,11 +66,29 @@ const connect = function() { // Any data from the server can be manipulated here. let parsed = JSON.parse(msg.data); switch (parsed.type) { + case "session": + socket.send(JSON.stringify({ + "type":"session", + "data": { + "session":session + } + })); + break; case "board": console.log("Setting board state"); + + // lazily clean up board and reinit + for (var i = 0; i < boardSize; i++) { + for (var j = 0; j < boardSize; j++) { + state[i][j] = 0; + } + } + + // set up board according to db state parsed.data.forEach( function (move, index) { state[move.x][move.y] = move.state; }); + drawGrid(); break; case "new": -- 2.47.2