Refactored out logging (need better solution) and socket seraching
This commit is contained in:
parent
f4e75bd90b
commit
18ed995ec9
1 changed files with 22 additions and 63 deletions
85
src/index.ts
85
src/index.ts
|
|
@ -1,4 +1,4 @@
|
||||||
import express, { Express, Request, Response } from "express";
|
import express from "express";
|
||||||
import http from "http";
|
import http from "http";
|
||||||
import { v4 as uuidv4 } from "uuid";
|
import { v4 as uuidv4 } from "uuid";
|
||||||
|
|
||||||
|
|
@ -28,50 +28,44 @@ app.get("/", (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get("/pallette", (req, res) => {
|
app.get("/pallette", (req, res) => {
|
||||||
res.json(pallette);
|
res.json({
|
||||||
|
availableColors,
|
||||||
|
pallette,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
io.on("connection", (socket) => {
|
io.on("connection", (socket) => {
|
||||||
console.log("someone connected");
|
|
||||||
|
|
||||||
socket.emit("hello", "I don't know you");
|
socket.emit("hello", "I don't know you");
|
||||||
|
|
||||||
socket.on("register", (login, password) => {
|
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) {
|
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");
|
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;
|
return;
|
||||||
}
|
}
|
||||||
if (registeredClients.find((client) => client.login === login)) {
|
if (registeredClients.find((client) => client.login === login)) {
|
||||||
socket.emit("register", false, "User with this login already exists");
|
socket.emit("register", false, "User with this login already exists");
|
||||||
console.log("user tried to register with existing login");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
registeredClients.push(new Client(login, password));
|
const client = new Client(login, password, socket);
|
||||||
onlineClients.set(socket, new Client(login, password));
|
registeredClients.push(client);
|
||||||
|
onlineClients.set(socket, client);
|
||||||
socket.emit("register", true, "User registered successfully");
|
socket.emit("register", true, "User registered successfully");
|
||||||
console.log("user registered successfully");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on("login", (login, password) => {
|
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) {
|
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");
|
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;
|
return;
|
||||||
}
|
}
|
||||||
if (!registeredClients.find((client) => client.login === login)) {
|
if (!registeredClients.find((client) => client.login === login)) {
|
||||||
socket.emit("login", false, "User with this login does not exist");
|
socket.emit("login", false, "User with this login does not exist");
|
||||||
console.log("user tried to login with non existing login");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (registeredClients.find((client) => client.login === login && client.password !== password)) {
|
if (registeredClients.find((client) => client.login === login && client.password !== password)) {
|
||||||
socket.emit("login", false, "Wrong password");
|
socket.emit("login", false, "Wrong password");
|
||||||
console.log("user tried to login with wrong password");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
onlineClients.set(socket, new Client(login, password));
|
onlineClients.set(socket, new Client(login, password, socket));
|
||||||
socket.emit("login", true, "User logged in successfully");
|
socket.emit("login", true, "User logged in successfully");
|
||||||
|
|
||||||
registerSocketLoggedInFunctions(socket);
|
registerSocketLoggedInFunctions(socket);
|
||||||
|
|
@ -82,7 +76,6 @@ io.on("connection", (socket) => {
|
||||||
socket.on("disconnect", () => {
|
socket.on("disconnect", () => {
|
||||||
const client = onlineClients.get(socket);
|
const client = onlineClients.get(socket);
|
||||||
if (client !== undefined) {
|
if (client !== undefined) {
|
||||||
console.log("user " + client.login + " disconnected");
|
|
||||||
for (const game of Array.from(availableGames.values())) {
|
for (const game of Array.from(availableGames.values())) {
|
||||||
if (game.player === client) {
|
if (game.player === client) {
|
||||||
availableGames.delete(game.id);
|
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);
|
const game = Array.from(runningGames.values()).find((game) => game.Guesser === client || game.Suggester === client);
|
||||||
if (game !== undefined) {
|
if (game !== undefined) {
|
||||||
const opponentPlayer = game.Opponent(client);
|
const opponentPlayer = game.Opponent(client);
|
||||||
const otherClientSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === opponentPlayer.login);
|
opponentPlayer.socket.emit("leaveGameResponse", true, 410);
|
||||||
if (otherClientSocket !== undefined) {
|
|
||||||
otherClientSocket.emit("leaveGameResponse", true, 410);
|
|
||||||
}
|
|
||||||
client.setInGame(false);
|
client.setInGame(false);
|
||||||
opponentPlayer.setInGame(false);
|
opponentPlayer.setInGame(false);
|
||||||
|
|
||||||
|
|
@ -105,7 +96,6 @@ io.on("connection", (socket) => {
|
||||||
}
|
}
|
||||||
onlineClients.delete(socket);
|
onlineClients.delete(socket);
|
||||||
} else {
|
} else {
|
||||||
console.log("anonymous disconnected");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
io.emit("updateNeeded");
|
io.emit("updateNeeded");
|
||||||
|
|
@ -121,10 +111,6 @@ instrument(io, {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
server.listen(9800, () => {
|
|
||||||
console.log("⚡️ listening on *:9800");
|
|
||||||
});
|
|
||||||
|
|
||||||
function registerSocketLoggedInFunctions(socket: Socket) {
|
function registerSocketLoggedInFunctions(socket: Socket) {
|
||||||
socket.on("getUpdate", getUpdateEventHandler);
|
socket.on("getUpdate", getUpdateEventHandler);
|
||||||
socket.on("createGame", createGameEventHandler);
|
socket.on("createGame", createGameEventHandler);
|
||||||
|
|
@ -187,12 +173,6 @@ function registerSocketLoggedInFunctions(socket: Socket) {
|
||||||
return;
|
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);
|
availableGames.delete(gameId);
|
||||||
io.emit("updateNeeded");
|
io.emit("updateNeeded");
|
||||||
|
|
||||||
|
|
@ -208,10 +188,8 @@ function registerSocketLoggedInFunctions(socket: Socket) {
|
||||||
suggester.setInGame(true);
|
suggester.setInGame(true);
|
||||||
guesser.setInGame(true);
|
guesser.setInGame(true);
|
||||||
const gameInfo = new Game(uuidv4(), guesser, suggester, game.tries);
|
const gameInfo = new Game(uuidv4(), guesser, suggester, game.tries);
|
||||||
const suggesterSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === suggester.login)!;
|
suggester.socket.emit("joinGameResponse", true, gameInfo.simplify(), Array.from(gameInfo.Colors));
|
||||||
const guesserSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === guesser.login)!;
|
guesser.socket.emit("joinGameResponse", true, gameInfo.simplify(), []);
|
||||||
suggesterSocket.emit("joinGameResponse", true, gameInfo.simplify(), Array.from(gameInfo.Colors));
|
|
||||||
guesserSocket.emit("joinGameResponse", true, gameInfo.simplify(), []);
|
|
||||||
runningGames.set(gameInfo.Id, gameInfo);
|
runningGames.set(gameInfo.Id, gameInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -235,25 +213,15 @@ function registerSocketLoggedInFunctions(socket: Socket) {
|
||||||
const game = runningGames.get(gameId);
|
const game = runningGames.get(gameId);
|
||||||
if (game === undefined || !client.inGame) {
|
if (game === undefined || !client.inGame) {
|
||||||
socket.emit("chatResponse", false, 400);
|
socket.emit("chatResponse", false, 400);
|
||||||
console.log("user " + client.login + " tried to chat in non existing game");
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const opponentPlayer = game.Opponent(client);
|
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, {
|
socket.emit("chatResponse", true, {
|
||||||
from: client.login,
|
from: client.login,
|
||||||
message,
|
message,
|
||||||
});
|
});
|
||||||
otherClientSocket.emit("chatResponse", true, {
|
opponentPlayer.socket.emit("chatResponse", true, {
|
||||||
from: client.login,
|
from: client.login,
|
||||||
message,
|
message,
|
||||||
});
|
});
|
||||||
|
|
@ -263,32 +231,26 @@ function registerSocketLoggedInFunctions(socket: Socket) {
|
||||||
const game = runningGames.get(gameId);
|
const game = runningGames.get(gameId);
|
||||||
if (game === undefined || !client.inGame) {
|
if (game === undefined || !client.inGame) {
|
||||||
socket.emit("guessResponse", false, 400);
|
socket.emit("guessResponse", false, 400);
|
||||||
console.log("user " + client.login + " tried to guess in non existing game");
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (game.Guesser.login !== client.login) {
|
if (game.Guesser.login !== client.login) {
|
||||||
socket.emit("guessResponse", false, 400);
|
socket.emit("guessResponse", false, 400);
|
||||||
console.log("user " + client.login + " tried to guess in game he is not guessing in");
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!game.Guess(client, guess)) {
|
if (!game.Guess(client, guess)) {
|
||||||
socket.emit("guessResponse", false, 400);
|
socket.emit("guessResponse", false, 400);
|
||||||
console.log("user " + client.login + " tried to guess but something gone terribly wrong");
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const opponentPlayer = game.Opponent(client);
|
const opponentPlayer = game.Opponent(client);
|
||||||
const otherClientSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === opponentPlayer.login)!;
|
|
||||||
if (game.GameWon()) {
|
if (game.GameWon()) {
|
||||||
console.log(`game ${gameId} won by ${client.login} and ${opponentPlayer.login}`);
|
|
||||||
|
|
||||||
socket.emit("gameStatus", [true]);
|
socket.emit("gameStatus", [true]);
|
||||||
otherClientSocket.emit("gameStatus", [true]);
|
opponentPlayer.socket.emit("gameStatus", [true]);
|
||||||
|
|
||||||
client.setInGame(false);
|
client.setInGame(false);
|
||||||
opponentPlayer.setInGame(false);
|
opponentPlayer.setInGame(false);
|
||||||
|
|
@ -296,10 +258,8 @@ function registerSocketLoggedInFunctions(socket: Socket) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (game.GameLost()) {
|
if (game.GameLost()) {
|
||||||
console.log(`game ${gameId} lost by ${client.login} and ${opponentPlayer.login}`);
|
|
||||||
|
|
||||||
socket.emit("gameStatus", [false]);
|
socket.emit("gameStatus", [false]);
|
||||||
otherClientSocket.emit("gameStatus", [false]);
|
opponentPlayer.socket.emit("gameStatus", [false]);
|
||||||
|
|
||||||
client.setInGame(false);
|
client.setInGame(false);
|
||||||
opponentPlayer.setInGame(false);
|
opponentPlayer.setInGame(false);
|
||||||
|
|
@ -311,20 +271,19 @@ function registerSocketLoggedInFunctions(socket: Socket) {
|
||||||
const game = runningGames.get(gameId);
|
const game = runningGames.get(gameId);
|
||||||
if (game === undefined || !client.inGame) {
|
if (game === undefined || !client.inGame) {
|
||||||
socket.emit("guessResponse", false, 400);
|
socket.emit("guessResponse", false, 400);
|
||||||
console.log("user " + client.login + " tried to guess in non existing game");
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.emit("leaveGameResponse", true, 200);
|
|
||||||
const opponentPlayer = game.Opponent(client);
|
const opponentPlayer = game.Opponent(client);
|
||||||
const otherClientSocket = Array.from(onlineClients.keys()).find((key) => onlineClients.get(key)?.login === opponentPlayer.login);
|
opponentPlayer.socket.emit("leaveGameResponse", true, 410);
|
||||||
if (otherClientSocket !== undefined) {
|
socket.emit("leaveGameResponse", true, 200);
|
||||||
otherClientSocket.emit("leaveGameResponse", true, 410);
|
|
||||||
}
|
|
||||||
|
|
||||||
client.setInGame(false);
|
client.setInGame(false);
|
||||||
opponentPlayer.setInGame(false);
|
opponentPlayer.setInGame(false);
|
||||||
runningGames.delete(game.Id);
|
runningGames.delete(game.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server.listen(9800, () => {
|
||||||
|
console.log("⚡ Listening on *:9800");
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue