Skip to content
Snippets Groups Projects
Commit f058f0d5 authored by ea654's avatar ea654
Browse files

Replace server.js

parent f545cc7c
Branches
No related tags found
No related merge requests found
...@@ -15,7 +15,6 @@ app.use(express.static('public')); ...@@ -15,7 +15,6 @@ app.use(express.static('public'));
io.on('connection', (socket) => { io.on('connection', (socket) => {
console.log('A user connected:', socket.id); console.log('A user connected:', socket.id);
// Create a room
socket.on('createRoom', (playerName) => { socket.on('createRoom', (playerName) => {
const roomCode = Math.random().toString(36).substring(2, 7).toUpperCase(); const roomCode = Math.random().toString(36).substring(2, 7).toUpperCase();
rooms[roomCode] = { rooms[roomCode] = {
...@@ -31,7 +30,6 @@ io.on('connection', (socket) => { ...@@ -31,7 +30,6 @@ io.on('connection', (socket) => {
console.log(`Room created with code ${roomCode} by ${playerName}`); console.log(`Room created with code ${roomCode} by ${playerName}`);
}); });
// Join a room
socket.on('joinRoom', ({ roomCode, playerName, playerId }) => { socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
const room = rooms[roomCode]; const room = rooms[roomCode];
...@@ -53,8 +51,6 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => { ...@@ -53,8 +51,6 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
} }
}); });
socket.on('gameSettings', ({ roomCode, category, difficulty, numQuestions }) => { socket.on('gameSettings', ({ roomCode, category, difficulty, numQuestions }) => {
if (rooms[roomCode]) { if (rooms[roomCode]) {
rooms[roomCode].settings = { category, difficulty, numQuestions }; rooms[roomCode].settings = { category, difficulty, numQuestions };
...@@ -88,17 +84,47 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => { ...@@ -88,17 +84,47 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
}); });
socket.on('nextQuestion', (roomCode) => { socket.on('nextQuestion', (roomCode) => {
const room = rooms[roomCode];
if (!room) return;
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
}
sendNextQuestion(roomCode); sendNextQuestion(roomCode);
}); });
function sendNextQuestion(roomCode) { function sendNextQuestion(roomCode) {
const room = rooms[roomCode]; const room = rooms[roomCode];
if (room && room.questions.length > 0) { if (!room) return;
room.questions.shift();
if (room.questions.length > 0) { if (room.questions.length > 0) {
io.to(roomCode).emit('newQuestion', room.questions[0]); const currentQuestion = room.questions.shift();
io.to(roomCode).emit('newQuestion', currentQuestion);
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
}
room.timeRemaining = 60;
room.timer = setInterval(() => {
room.timeRemaining -= 1;
io.to(roomCode).emit('timerUpdate', room.timeRemaining);
if (room.timeRemaining <= 0) {
clearInterval(room.timer);
room.timer = null;
sendNextQuestion(roomCode);
}
}, 1000);
} else { } else {
determineWinner(roomCode); determineWinner(roomCode);
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
} }
} }
} }
...@@ -120,6 +146,11 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => { ...@@ -120,6 +146,11 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
})) }))
}); });
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
}
delete rooms[roomCode]; delete rooms[roomCode];
} }
...@@ -129,6 +160,12 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => { ...@@ -129,6 +160,12 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
if (rooms[roomCode].players[socket.id]) { if (rooms[roomCode].players[socket.id]) {
delete rooms[roomCode].players[socket.id]; delete rooms[roomCode].players[socket.id];
console.log(`User ${socket.id} removed from room ${roomCode}`); console.log(`User ${socket.id} removed from room ${roomCode}`);
if (Object.keys(rooms[roomCode].players).length === 0) {
if (rooms[roomCode].timer) {
clearInterval(rooms[roomCode].timer);
}
delete rooms[roomCode];
}
} }
} }
}); });
...@@ -169,4 +206,3 @@ function shuffleArray(array) { ...@@ -169,4 +206,3 @@ function shuffleArray(array) {
} }
server.listen(PORT, () => console.log(`Server is running on http://localhost:${PORT}`)); server.listen(PORT, () => console.log(`Server is running on http://localhost:${PORT}`));
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment