Updated the connection.js handler

This commit is contained in:
Mathias Wagner 2023-06-10 03:55:49 +02:00
parent 845f9dc88d
commit 74fb1f5918

View File

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