ludo-web-multiplayer/backend/handlers/roomHandler.js
2023-11-28 19:25:55 +01:00

32 lines
1.1 KiB
JavaScript

const { getRooms, getRoom, updateRoom, createNewRoom } = require('../controllers/roomController');
const { sendToOnePlayerRooms, sendToOnePlayerData, sendToPlayersData } = require('../socket/emits');
module.exports = socket => {
const req = socket.request;
const handleGetData = async () => {
const room = await getRoom(req.session.roomId);
// Handle the situation when the server crashes and any player reconnects after the time has expired
// Typically, the responsibility for changing players is managed by gameHandler.js.
if (room.nextMoveTime <= Date.now()) {
room.changeMovingPlayer();
await updateRoom(room);
}
sendToOnePlayerData(socket.id, room);
};
const handleGetAllRooms = async () => {
let rooms = await getRooms();
sendToOnePlayerRooms(socket.id, rooms);
};
const handleCreateRoom = async data => {
createNewRoom(data);
socket.to(socket.id).emit('room:created');
};
socket.on('room:data', handleGetData);
socket.on('room:rooms', handleGetAllRooms);
socket.on('room:create', handleCreateRoom);
};