]> Untitled Git - go.git/commitdiff
Updated to 1.1.0 1.1.0
authorClifton Palmer <clifton.james.palmer@protonmail.com>
Wed, 8 Nov 2023 11:03:06 +0000 (05:03 -0600)
committerClifton Palmer <clifton.james.palmer@protonmail.com>
Wed, 8 Nov 2023 11:04:07 +0000 (05:04 -0600)
* Added prod backend network
* Use session ID when doing board operations

docker-compose-prod.yml
docker-compose.yml
socket/server.js
web/static/go.js

index d91243911f192b60822da7c0a18b0a401f94cfb2..64ca315546908a7829c1636485bc64aeb98fa65d 100644 (file)
@@ -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
index 7356cfdaf8a06a4799f7f37af7c3004713ed3da5..3d27da7cc9a225df4d73e819b5c7191d8860dbc5 100644 (file)
@@ -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
index 52ce170658c99f81d17e154b9f9fb92d8cad56b4..cb62184d62ba4ddfb68dc6d3bd5d7c2d8b72d7ad 100644 (file)
@@ -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",
index 7c417ca3a42b1e5de7b89cafec2309161b0a10b3..3f9c3d86167576be2a6465f276da88dd1fae53f7 100644 (file)
@@ -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":