const { getRooms, getRoom, updateRoom, createNewRoom } = require('../controllers/roomController'); const { sendToOnePlayerRooms, sendToOnePlayerData } = 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); };