Initial commit
Some checks failed
Publish Docker image / Push Docker image to Docker Hub (push) Failing after 4m2s

This commit is contained in:
2025-02-27 19:24:14 +01:00
parent 9318052560
commit 62acb290fe
27 changed files with 4873 additions and 0 deletions

39
server/controller/room.js Normal file
View File

@ -0,0 +1,39 @@
let rooms = {};
module.exports.roomExists = (roomId) => rooms[roomId] !== undefined;
module.exports.connectUserToRoom = (roomId, user) => {
if (rooms[roomId]) {
rooms[roomId].members.push({...user, creator: false});
} else {
rooms[roomId] = {members: [{...user, creator: true}], settings: {}};
}
console.log(JSON.stringify(rooms));
}
module.exports.getUserRoom = (userId) => {
for (const roomId in rooms) {
const room = rooms[roomId];
const memberIndex = room.members.findIndex(member => member.id === userId);
if (memberIndex !== -1) return roomId;
}
}
module.exports.disconnectUser = (userId) => {
for (const roomId in rooms) {
const room = rooms[roomId];
const memberIndex = room.members.findIndex(member => member.id === userId);
if (memberIndex !== -1) {
if (room.members[memberIndex].creator) {
if (room.members.length > 1) room.members[1].creator = true;
}
room.members.splice(memberIndex, 1);
if (room.members.length === 0) delete rooms[roomId];
break;
}
}
}

View File

@ -0,0 +1,36 @@
const {connectUserToRoom, roomExists, disconnectUser, getUserRoom} = require("../controller/room");
module.exports = (socket) => {
let currentRoomId = null;
socket.on("disconnect", () => {
const roomId = getUserRoom(socket.id);
if (roomId) socket.to(roomId).emit("user-disconnected", socket.id);
disconnectUser(socket.id);
});
socket.on("join-room", ({roomId, name}) => {
if (currentRoomId) return socket.emit("already-in-room", currentRoomId);
if (roomExists(roomId.toString())) {
connectUserToRoom(roomId, {id: socket.id, name: name.toString()});
socket.join(roomId);
socket.to(roomId).emit("user-connected", {name: name.toString(), id: socket.id});
socket.emit("room-joined", roomId);
currentRoomId = roomId;
} else {
socket.emit("room-not-found", roomId.toString());
}
});
socket.on("create-room", ({name}) => {
if (!name) return socket.emit("room-name-required");
const roomId = Math.random().toString(36).substring(7);
connectUserToRoom(roomId, {id: socket.id, name: name?.toString()});
socket.join(roomId);
socket.emit("room-created", roomId);
currentRoomId = roomId;
});
}

15
server/index.js Normal file
View File

@ -0,0 +1,15 @@
const express = require("express");
const { Server } = require("socket.io");
const http = require("http");
const app = express();
app.disable("x-powered-by");
const server = http.createServer(app);
const io = new Server(server, {cors: {origin: "*"}});
io.on("connection", require("./handler/connection"));
server.listen(5287, () => {
console.log("Server running on port 5287");
});