ludo-web-multiplayer/backend/handlers/roomHandler.js
2023-11-26 16:30:33 +01:00

38 lines
1.3 KiB
JavaScript

const { getRooms, getRoom, updateRoom } = require('../controllers/roomController');
const { sendToOnePlayerRooms, sendToOnePlayerData, sendToPlayersData } = require('../socket/emits');
module.exports = socket => {
const req = socket.request;
const getData = 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 getAllRooms = async () => {
let rooms = await getRooms();
const response = [];
rooms.forEach(room => {
if (!room.isStarted && !room.isFull()) {
response.push({
_id: room._id,
private: room.private,
name: room.name,
players: room.players,
isStarted: room.isStarted,
});
}
});
sendToOnePlayerRooms(socket.id, response);
};
socket.on('room:data', getData);
socket.on('room:rooms', getAllRooms);
};