diff --git a/backend/src/SocketIO/LobbyManager/Classes/SocketUser.js b/backend/src/SocketIO/Classes/SocketUser.js similarity index 100% rename from backend/src/SocketIO/LobbyManager/Classes/SocketUser.js rename to backend/src/SocketIO/Classes/SocketUser.js diff --git a/backend/src/SocketIO/GameManager/ClientHandler.js b/backend/src/SocketIO/GameManager/ClientHandler.js new file mode 100644 index 0000000..9806815 --- /dev/null +++ b/backend/src/SocketIO/GameManager/ClientHandler.js @@ -0,0 +1,37 @@ +const socketIO = require("socket.io"); +const SocketUser = require("../Classes/SocketUser"); +const LobbyManager = require("../LobbyManager/LobbyManager"); + +class ClientHandler { + /** @param {socketIO.Socket} socket @param {LobbyManager} lobbyManager */ + constructor(socket, lobbyManager) { + this.socket = socket; + this.lobbyManager = lobbyManager; + + this.user = new SocketUser( + this.socket.request.session.user.id, + this.socket.request.session.user.username, + this.socket + ); + + this.socket.on("disconnect", () => { this.defaultDisconnect() }) + + this.checkForLobby(); + } + + checkForLobby(){ + const isUserInLobby = this.lobbyManager.oldLobbys.some((lobby) => + lobby.users.some((user) => user.id === this.user.id) + ); + + if (!isUserInLobby) { + this.socket.disconnect(); + } + } + + defaultDisconnect(){ + + } +} + +module.exports = ClientHandler; \ No newline at end of file diff --git a/backend/src/SocketIO/LobbyManager/Classes/Lobby.js b/backend/src/SocketIO/LobbyManager/Classes/Lobby.js index 34029c1..7bc2b9a 100644 --- a/backend/src/SocketIO/LobbyManager/Classes/Lobby.js +++ b/backend/src/SocketIO/LobbyManager/Classes/Lobby.js @@ -1,5 +1,5 @@ const socketIO = require("socket.io"); -const SocketUser = require("./SocketUser"); +const SocketUser = require("../../Classes/SocketUser"); const LobbyManager = require("../LobbyManager"); const TemporaryLobby = require("./TemporaryLobby"); diff --git a/backend/src/SocketIO/LobbyManager/Classes/TemporaryLobby.js b/backend/src/SocketIO/LobbyManager/Classes/TemporaryLobby.js index 87903d8..352f027 100644 --- a/backend/src/SocketIO/LobbyManager/Classes/TemporaryLobby.js +++ b/backend/src/SocketIO/LobbyManager/Classes/TemporaryLobby.js @@ -1,4 +1,6 @@ +const { Socket } = require("socket.io"); const LobbyManager = require("../LobbyManager"); +const SocketUser = require("../../Classes/SocketUser"); class TemporaryLobby{ /** @param { string } code @param {Array} users @param {LobbyManager} lobbyManager*/ diff --git a/backend/src/SocketIO/LobbyManager/ClientHandler.js b/backend/src/SocketIO/LobbyManager/ClientHandler.js index e962368..a529eb9 100644 --- a/backend/src/SocketIO/LobbyManager/ClientHandler.js +++ b/backend/src/SocketIO/LobbyManager/ClientHandler.js @@ -1,6 +1,6 @@ const socketIO = require("socket.io"); const LobbyManager = require("./LobbyManager"); -const SocketUser = require("./Classes/SocketUser"); +const SocketUser = require("../Classes/SocketUser"); class ClientHandler { /** @param {socketIO.Socket} socket @param {LobbyManager} lobbyManager */ diff --git a/backend/src/SocketIO/LobbyManager/LobbyManager.js b/backend/src/SocketIO/LobbyManager/LobbyManager.js index 52aa608..ba74840 100644 --- a/backend/src/SocketIO/LobbyManager/LobbyManager.js +++ b/backend/src/SocketIO/LobbyManager/LobbyManager.js @@ -1,6 +1,6 @@ const socketIO = require("socket.io"); const Lobby = require("./Classes/Lobby"); -const SocketUser = require("./Classes/SocketUser"); +const SocketUser = require("../Classes/SocketUser"); const TemporaryLobby = require("./Classes/TemporaryLobby"); class LobbyManager { diff --git a/backend/src/SocketIO/SocketIOManager.js b/backend/src/SocketIO/SocketIOManager.js index 32b0a86..de1398a 100644 --- a/backend/src/SocketIO/SocketIOManager.js +++ b/backend/src/SocketIO/SocketIOManager.js @@ -3,7 +3,8 @@ const http = require("http"); const DataBaseManager = require("../Database/DataBaseManager"); const ExpressManager = require("../Express/ExpressManager"); const LobbyManager = require("./LobbyManager/LobbyManager"); -const ClientHandler = require("./LobbyManager/ClientHandler"); +const ClientHandlerLobby = require("./LobbyManager/ClientHandler"); +const ClientHandlerGame = require("./GameManager/ClientHandler"); require("dotenv").config(); class SocketIOManager { @@ -27,7 +28,6 @@ class SocketIOManager { /* Der LobbyManager kümmert sich um alle Lobbys - Der LobbyHandler kümmert sich um die einzelnen Anfragen der Clients */ this.lobbyManager = new LobbyManager(this.io); @@ -61,7 +61,11 @@ class SocketIOManager { }); socket.on("hereForLobby", () => { - new ClientHandler(socket, this.lobbyManager); + new ClientHandlerLobby(socket, this.lobbyManager); + }); + + socket.on("hereForGame", () => { + new ClientHandlerGame(socket, this.lobbyManager); }); } } diff --git a/frontend/game/scripts/index.js b/frontend/game/scripts/index.js index 2c5af3f..b9eead3 100644 --- a/frontend/game/scripts/index.js +++ b/frontend/game/scripts/index.js @@ -15,12 +15,12 @@ class ServerConnectionManager { this.socket.on("connect_error", (error) => { console.log(error); - window.location.pathname = "/dashboard"; + window.location.pathname = "/dashboard/lobby"; }); this.socket.on("disconnect", () => { console.log("Die verbindung wurde unterbrochen!"); - window.location.pathname = "/dashboard"; + window.location.pathname = "/dashboard/lobby"; }); } }