Refactor SocketUser class location and update imports; add new ClientHandler for game management

This commit is contained in:
2025-03-27 22:50:08 +01:00
parent 031fd65332
commit f4cfe1e111
8 changed files with 51 additions and 8 deletions

View File

@@ -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;

View File

@@ -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");

View File

@@ -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<SocketUser>} users @param {LobbyManager} lobbyManager*/

View File

@@ -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 */

View File

@@ -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 {

View File

@@ -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);
});
}
}