Refactor SocketUser class location and update imports; add new ClientHandler for game management
This commit is contained in:
37
backend/src/SocketIO/GameManager/ClientHandler.js
Normal file
37
backend/src/SocketIO/GameManager/ClientHandler.js
Normal 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;
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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*/
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user