From 590b75f9860a539d11906521fd25cacad05ab0a8 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Thu, 24 Jan 2019 19:27:01 +0100
Subject: [PATCH] Tiny changes...

---
 client/src/App.vue |   2 +-
 client/src/main.js |  14 +--
 server/sockets.js  | 242 ++++++++++++++++++++++-----------------------
 3 files changed, 127 insertions(+), 131 deletions(-)

diff --git a/client/src/App.vue b/client/src/App.vue
index 1ece7921..f68877e1 100644
--- a/client/src/App.vue
+++ b/client/src/App.vue
@@ -16,7 +16,7 @@
               p vchess.club {{ $lang }}
             img(src="./assets/images/index/wildebeest.svg")
     .row
-      // Menu (top of page)
+      // Menu (top of page): TODO how to organize it ?
       nav
         router-link(to="/") Home
         | &nbsp;|&nbsp;
diff --git a/client/src/main.js b/client/src/main.js
index 1fe69b2b..4659a5b0 100644
--- a/client/src/main.js
+++ b/client/src/main.js
@@ -24,6 +24,10 @@ new Vue({
       Vue.prototype.$tr = tModule.translations;
       //console.log(tModule.translations);
     },
+    $route: function(newRoute) {
+      console.log(this.$route.params);
+      //TODO: conn.send("enter", newRoute)
+    },
   },
 	created: function() {
     const supportedLangs = ["en","es","fr"];
@@ -31,9 +35,7 @@ new Vue({
       supportedLangs.includes(navigator.language)
         ? navigator.language
         : "en";
-		ajax("/variants", "GET", res => {
-			Vue.prototype.$variants = res.variantArray;
-		});
+		ajax("/variants", "GET", res => { Vue.prototype.$variants = res.variantArray; });
     Vue.prototype.$tr = {}; //to avoid a compiler error
 		// TODO: if there is a socket ID in localStorage, it means a live game was interrupted (and should resume)
 		const myid = localStorage["myid"] || util.getRandString();
@@ -63,10 +65,4 @@ new Vue({
 // game : aussi systématique
 // problems: on-demand
 //
-// It works (to watch for route change), in a component:
-//watch: {
-//  $route: function(newRoute) {
-//    console.log(this.$route.params);
-//  },
-//},
 // See https://router.vuejs.org/guide/essentials/dynamic-matching.html#reacting-to-params-changes
diff --git a/server/sockets.js b/server/sockets.js
index 4d15f331..80e4c442 100644
--- a/server/sockets.js
+++ b/server/sockets.js
@@ -42,127 +42,127 @@ module.exports = function(wss) {
 		// We don't know yet on which page the user will be
 		clients[sid] = {socket: socket, path: ""};
 
-		socket.on("message", objtxt => {
-			let obj = JSON.parse(objtxt);
-			switch (obj.code)
-			{
-				case "enter":
-					if (clients[sid].path.length > 0)
-						remInArray(pages[clients[sid].path], sid);
-					clients[sid].path = obj.path;
-					pages[obj.path].push(sid);
-					// TODO also: notify "old" sub-room that I left (if it was not index)
-					if (obj.path == "/")
-					{
-						// Send counting info
-						let countings = {};
-						Object.keys(pages).forEach(
-							path => { countings[path] = pages[path].length; });
-						socket.send(JSON.stringify({code:"counts",counts:countings}));
-					}
-					else
-					{
-						// Send to every client connected on index an update message for counts
-						pages["/"].forEach((id) => {
-							clients[id].socket.send(
-								JSON.stringify({code:"increase",path:obj.path}), noop);
-						});
-						// TODO: do not notify anything in rules and problems sections (no socket required)
-						// --> in fact only /Atomic (main hall) and inside a game: /Atomic/392f3ju
-						// Also notify the (sub-)room (including potential opponents):
-						Object.keys(clients[page]).forEach( k => {
-							clients[page][k].send(JSON.stringify({code:"connect",id:sid}), noop);
-						});
-						// Finally, receive (sub-)room composition
-						// TODO.
-					}
-// NOTE: no "leave" counterpart (because it's always to enter somewhere else)
-//				case "leave":
+//		socket.on("message", objtxt => {
+//			let obj = JSON.parse(objtxt);
+//			switch (obj.code)
+//			{
+//				case "enter":
+//					if (clients[sid].path.length > 0)
+//						remInArray(pages[clients[sid].path], sid);
+//					clients[sid].path = obj.path;
+//					pages[obj.path].push(sid);
+//					// TODO also: notify "old" sub-room that I left (if it was not index)
+//					if (obj.path == "/")
+//					{
+//						// Send counting info
+//						let countings = {};
+//						Object.keys(pages).forEach(
+//							path => { countings[path] = pages[path].length; });
+//						socket.send(JSON.stringify({code:"counts",counts:countings}));
+//					}
+//					else
+//					{
+//						// Send to every client connected on index an update message for counts
+//						pages["/"].forEach((id) => {
+//							clients[id].socket.send(
+//								JSON.stringify({code:"increase",path:obj.path}), noop);
+//						});
+//						// TODO: do not notify anything in rules and problems sections (no socket required)
+//						// --> in fact only /Atomic (main hall) and inside a game: /Atomic/392f3ju
+//						// Also notify the (sub-)room (including potential opponents):
+//						Object.keys(clients[page]).forEach( k => {
+//							clients[page][k].send(JSON.stringify({code:"connect",id:sid}), noop);
+//						});
+//						// Finally, receive (sub-)room composition
+//						// TODO.
+//					}
+//// NOTE: no "leave" counterpart (because it's always to enter somewhere else)
+////				case "leave":
+////					break;
+//				// Transmit chats and moves to current room
+//				// TODO: WebRTC instead in this case (most demanding?)
+//				case "newchat":
+//					if (!!clients[page][obj.oppid])
+//					{
+//						clients[page][obj.oppid].send(
+//							JSON.stringify({code:"newchat",msg:obj.msg}), noop);
+//					}
 //					break;
-				// Transmit chats and moves to current room
-				// TODO: WebRTC instead in this case (most demanding?)
-				case "newchat":
-					if (!!clients[page][obj.oppid])
-					{
-						clients[page][obj.oppid].send(
-							JSON.stringify({code:"newchat",msg:obj.msg}), noop);
-					}
-					break;
-				case "newmove":
-					if (!!clients[page][obj.oppid])
-					{
-						clients[page][obj.oppid].send(
-							JSON.stringify({code:"newmove",move:obj.move}), noop);
-					}
-					break;
-
-
-				// TODO: generalize that for several opponents
-				case "ping":
-					if (!!clients[page][obj.oppid])
-						socket.send(JSON.stringify({code:"pong",gameId:obj.gameId}));
-					break;
-				case "lastate":
-					if (!!clients[page][obj.oppid])
-					{
-						const oppId = obj.oppid;
-						obj.oppid = sid; //I'm oppid for my opponent
-						clients[page][oppId].send(JSON.stringify(obj), noop);
-					}
-					break;
-				// TODO: moreover, here, game info should be sent (through challenge; not stored here)
-				case "newgame":
-					if (!!games[page])
-					{
-						// Start a new game
-						const oppId = games[page]["id"];
-						const fen = games[page]["fen"];
-						const gameId = games[page]["gameid"];
-						delete games[page];
-						const mycolor = (Math.random() < 0.5 ? 'w' : 'b');
-						socket.send(JSON.stringify(
-							{code:"newgame",fen:fen,oppid:oppId,color:mycolor,gameid:gameId}));
-						if (!!clients[page][oppId])
-						{
-							clients[page][oppId].send(
-								JSON.stringify(
-									{code:"newgame",fen:fen,oppid:sid,color:mycolor=="w"?"b":"w",gameid:gameId}),
-								noop);
-						}
-					}
-					else
-						games[page] = {id:sid, fen:obj.fen, gameid:obj.gameid}; //wait for opponent
-					break;
-				case "cancelnewgame": //if a user cancel his seek
-					// TODO: just transmit event
-					//delete games[page];
-					break;
-				// TODO: also other challenge events
-				case "resign":
-					if (!!clients[page][obj.oppid])
-						clients[page][obj.oppid].send(JSON.stringify({code:"resign"}), noop);
-					break;
-				// TODO: case "challenge" (get ID) --> send to all, "acceptchallenge" (with ID) --> send to all, "cancelchallenge" --> send to all
-				// also, "sendgame" (give current game info, if any) --> to new connections, "sendchallenges" (same for challenges) --> to new connections
-			}
-		});
-		socket.on("close", () => {
-			delete clients[sid];
-			// TODO: carefully delete pages[.........]
-			// + adapt below:
-			if (page != "/")
-			{
-				// Send to every client connected on index an update message for counts
-				Object.keys(clients["index"]).forEach( k => {
-					clients["index"][k].send(
-						JSON.stringify({code:"decrease",vid:page}), noop);
-				});
-			}
-			// Also notify potential opponents:
-			// hit all clients which check if sid corresponds
-			Object.keys(clients[page]).forEach( k => {
-				clients[page][k].send(JSON.stringify({code:"disconnect",id:sid}), noop);
-			});
-		});
+//				case "newmove":
+//					if (!!clients[page][obj.oppid])
+//					{
+//						clients[page][obj.oppid].send(
+//							JSON.stringify({code:"newmove",move:obj.move}), noop);
+//					}
+//					break;
+//
+//
+//				// TODO: generalize that for several opponents
+//				case "ping":
+//					if (!!clients[page][obj.oppid])
+//						socket.send(JSON.stringify({code:"pong",gameId:obj.gameId}));
+//					break;
+//				case "lastate":
+//					if (!!clients[page][obj.oppid])
+//					{
+//						const oppId = obj.oppid;
+//						obj.oppid = sid; //I'm oppid for my opponent
+//						clients[page][oppId].send(JSON.stringify(obj), noop);
+//					}
+//					break;
+//				// TODO: moreover, here, game info should be sent (through challenge; not stored here)
+//				case "newgame":
+//					if (!!games[page])
+//					{
+//						// Start a new game
+//						const oppId = games[page]["id"];
+//						const fen = games[page]["fen"];
+//						const gameId = games[page]["gameid"];
+//						delete games[page];
+//						const mycolor = (Math.random() < 0.5 ? 'w' : 'b');
+//						socket.send(JSON.stringify(
+//							{code:"newgame",fen:fen,oppid:oppId,color:mycolor,gameid:gameId}));
+//						if (!!clients[page][oppId])
+//						{
+//							clients[page][oppId].send(
+//								JSON.stringify(
+//									{code:"newgame",fen:fen,oppid:sid,color:mycolor=="w"?"b":"w",gameid:gameId}),
+//								noop);
+//						}
+//					}
+//					else
+//						games[page] = {id:sid, fen:obj.fen, gameid:obj.gameid}; //wait for opponent
+//					break;
+//				case "cancelnewgame": //if a user cancel his seek
+//					// TODO: just transmit event
+//					//delete games[page];
+//					break;
+//				// TODO: also other challenge events
+//				case "resign":
+//					if (!!clients[page][obj.oppid])
+//						clients[page][obj.oppid].send(JSON.stringify({code:"resign"}), noop);
+//					break;
+//				// TODO: case "challenge" (get ID) --> send to all, "acceptchallenge" (with ID) --> send to all, "cancelchallenge" --> send to all
+//				// also, "sendgame" (give current game info, if any) --> to new connections, "sendchallenges" (same for challenges) --> to new connections
+//			}
+//		});
+//		socket.on("close", () => {
+//			delete clients[sid];
+//			// TODO: carefully delete pages[.........]
+//			// + adapt below:
+//			if (page != "/")
+//			{
+//				// Send to every client connected on index an update message for counts
+//				Object.keys(clients["index"]).forEach( k => {
+//					clients["index"][k].send(
+//						JSON.stringify({code:"decrease",vid:page}), noop);
+//				});
+//			}
+//			// Also notify potential opponents:
+//			// hit all clients which check if sid corresponds
+//			Object.keys(clients[page]).forEach( k => {
+//				clients[page][k].send(JSON.stringify({code:"disconnect",id:sid}), noop);
+//			});
+//		});
 	});
 }
-- 
2.44.0