From 18ed995ec9fbbc1594539bfe2cccaa0b586c2ee0 Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Sun, 5 Mar 2023 14:35:52 +0700 Subject: [PATCH] Refactored out logging (need better solution) and socket seraching --- src/index.ts | 85 ++++++++++++++-------------------------------------- 1 file changed, 22 insertions(+), 63 deletions(-) diff --git a/src/index.ts b/src/index.ts index df5956f..862acc2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import express, { Express, Request, Response } from "express"; +import express from "express"; import http from "http"; import { v4 as uuidv4 } from "uuid"; @@ -28,50 +28,44 @@ app.get("/", (req, res) => { }); app.get("/pallette", (req, res) => { - res.json(pallette); + res.json({ + availableColors, + pallette, + }); }); io.on("connection", (socket) => { - console.log("someone connected"); - socket.emit("hello", "I don't know you"); socket.on("register", (login, password) => { - console.log("user send register with login: " + login + " and password: " + password); if (login.length < 3 || login.length > 20 || password.length < 3 || password.length > 20) { socket.emit("register", false, "Login or password is too short or too long"); - console.log("user tried to register with too short or too long login or password"); return; } if (registeredClients.find((client) => client.login === login)) { socket.emit("register", false, "User with this login already exists"); - console.log("user tried to register with existing login"); return; } - registeredClients.push(new Client(login, password)); - onlineClients.set(socket, new Client(login, password)); + const client = new Client(login, password, socket); + registeredClients.push(client); + onlineClients.set(socket, client); socket.emit("register", true, "User registered successfully"); - console.log("user registered successfully"); }); socket.on("login", (login, password) => { - console.log("user send login with login: " + login + " and password: " + password); if (login.length < 3 || login.length > 20 || password.length < 3 || password.length > 20) { socket.emit("login", false, "Login or password is too short or too long"); - console.log("user tried to login with too short or too long login or password"); return; } if (!registeredClients.find((client) => client.login === login)) { socket.emit("login", false, "User with this login does not exist"); - console.log("user tried to login with non existing login"); return; } if (registeredClients.find((client) => client.login === login && client.password !== password)) { socket.emit("login", false, "Wrong password"); - console.log("user tried to login with wrong password"); return; } - onlineClients.set(socket, new Client(login, password)); + onlineClients.set(socket, new Client(login, password, socket)); socket.emit("login", true, "User logged in successfully"); registerSocketLoggedInFunctions(socket); @@ -82,7 +76,6 @@ io.on("connection", (socket) => { socket.on("disconnect", () => { const client = onlineClients.get(socket); if (client !== undefined) { - console.log("user " + client.login + " disconnected"); for (const game of Array.from(availableGames.values())) { if (game.player === client) { availableGames.delete(game.id); @@ -93,10 +86,8 @@ io.on("connection", (socket) => { const game = Array.from(runningGames.values()).find((game) => game.Guesser === client || game.Suggester === client); if (game !== undefined) { const opponentPlayer = game.Opponent(client); - const otherClientSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === opponentPlayer.login); - if (otherClientSocket !== undefined) { - otherClientSocket.emit("leaveGameResponse", true, 410); - } + opponentPlayer.socket.emit("leaveGameResponse", true, 410); + client.setInGame(false); opponentPlayer.setInGame(false); @@ -105,7 +96,6 @@ io.on("connection", (socket) => { } onlineClients.delete(socket); } else { - console.log("anonymous disconnected"); } io.emit("updateNeeded"); @@ -121,10 +111,6 @@ instrument(io, { }, }); -server.listen(9800, () => { - console.log("⚡️ listening on *:9800"); -}); - function registerSocketLoggedInFunctions(socket: Socket) { socket.on("getUpdate", getUpdateEventHandler); socket.on("createGame", createGameEventHandler); @@ -187,12 +173,6 @@ function registerSocketLoggedInFunctions(socket: Socket) { return; } - const gameSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === game.player.login); - if (gameSocket === undefined) { - socket.emit("joinGameResponse", false, "Player is not online"); - return; - } - availableGames.delete(gameId); io.emit("updateNeeded"); @@ -208,10 +188,8 @@ function registerSocketLoggedInFunctions(socket: Socket) { suggester.setInGame(true); guesser.setInGame(true); const gameInfo = new Game(uuidv4(), guesser, suggester, game.tries); - const suggesterSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === suggester.login)!; - const guesserSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === guesser.login)!; - suggesterSocket.emit("joinGameResponse", true, gameInfo.simplify(), Array.from(gameInfo.Colors)); - guesserSocket.emit("joinGameResponse", true, gameInfo.simplify(), []); + suggester.socket.emit("joinGameResponse", true, gameInfo.simplify(), Array.from(gameInfo.Colors)); + guesser.socket.emit("joinGameResponse", true, gameInfo.simplify(), []); runningGames.set(gameInfo.Id, gameInfo); } @@ -235,25 +213,15 @@ function registerSocketLoggedInFunctions(socket: Socket) { const game = runningGames.get(gameId); if (game === undefined || !client.inGame) { socket.emit("chatResponse", false, 400); - console.log("user " + client.login + " tried to chat in non existing game"); - return; } const opponentPlayer = game.Opponent(client); - const otherClientSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === opponentPlayer.login); - if (otherClientSocket === undefined) { - socket.emit("chatResponse", false, 404); - console.log("user " + client.login + " tried to chat with non existing user"); - - return; - } - socket.emit("chatResponse", true, { from: client.login, message, }); - otherClientSocket.emit("chatResponse", true, { + opponentPlayer.socket.emit("chatResponse", true, { from: client.login, message, }); @@ -263,32 +231,26 @@ function registerSocketLoggedInFunctions(socket: Socket) { const game = runningGames.get(gameId); if (game === undefined || !client.inGame) { socket.emit("guessResponse", false, 400); - console.log("user " + client.login + " tried to guess in non existing game"); return; } if (game.Guesser.login !== client.login) { socket.emit("guessResponse", false, 400); - console.log("user " + client.login + " tried to guess in game he is not guessing in"); return; } if (!game.Guess(client, guess)) { socket.emit("guessResponse", false, 400); - console.log("user " + client.login + " tried to guess but something gone terribly wrong"); return; } const opponentPlayer = game.Opponent(client); - const otherClientSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === opponentPlayer.login)!; if (game.GameWon()) { - console.log(`game ${gameId} won by ${client.login} and ${opponentPlayer.login}`); - socket.emit("gameStatus", [true]); - otherClientSocket.emit("gameStatus", [true]); + opponentPlayer.socket.emit("gameStatus", [true]); client.setInGame(false); opponentPlayer.setInGame(false); @@ -296,10 +258,8 @@ function registerSocketLoggedInFunctions(socket: Socket) { return; } if (game.GameLost()) { - console.log(`game ${gameId} lost by ${client.login} and ${opponentPlayer.login}`); - socket.emit("gameStatus", [false]); - otherClientSocket.emit("gameStatus", [false]); + opponentPlayer.socket.emit("gameStatus", [false]); client.setInGame(false); opponentPlayer.setInGame(false); @@ -311,20 +271,19 @@ function registerSocketLoggedInFunctions(socket: Socket) { const game = runningGames.get(gameId); if (game === undefined || !client.inGame) { socket.emit("guessResponse", false, 400); - console.log("user " + client.login + " tried to guess in non existing game"); - return; } - socket.emit("leaveGameResponse", true, 200); const opponentPlayer = game.Opponent(client); - const otherClientSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === opponentPlayer.login); - if (otherClientSocket !== undefined) { - otherClientSocket.emit("leaveGameResponse", true, 410); - } + opponentPlayer.socket.emit("leaveGameResponse", true, 410); + socket.emit("leaveGameResponse", true, 200); client.setInGame(false); opponentPlayer.setInGame(false); runningGames.delete(game.Id); } } + +server.listen(9800, () => { + console.log("⚡ Listening on *:9800"); +});