const express = require('express'); const path = require('path'); const http = require('http'); const { Server } = require('socket.io'); const app = express(); const server = http.createServer(app); const io = new Server(server); const PORT = process.env.PORT || 3000; let waitingPlayer = null; // Sert tous les fichiers du dossier "client" app.use(express.static(path.join(__dirname, "..", "client"))); const correctDoor = { x : 2, y : 6}; io.on("connection", (socket) => { console.log("Un client s'est connecte : ${socket.id}"); if (waitingPlayer === null){ waitingPlayer = socket; socket.emit("status", "En attente d'un second joueur..."); } else { const partner = waitingPlayer; waitingPlayer = null; const socketIsGuide = Math.random() < 0.5; socket.emit("role", socketIsGuide ? "guide" : "explorateur"); partner.emit("role", socketIsGuide ? "explorateur" : "guide"); socket.data.partnerId = partner.id; partner.data.partnerId = socket.id; const pairState = { gameOver: false}; socket.data.pairState = pairState; partner.data.pairState = pairState; socket.emit("status", "Partie prete !"); partner.emit("status", "Partie prete !"); } socket.on("message", (data) => { const partnerId = socket.data.partnerId; if (partnerId){ io.to(partnerId).emit("message", data); } }); socket.on("door_reached", (position) => { const pairState = socket.data.pairState; if (!pairState || pairState.gameOver) return; const partnerId = socket.data.partnerId; const isCorrect = position.x === correctDoor.x && position.y === correctDoor.y; if (!isCorrect){ pairState.gameOver = true; } const result = {correct: isCorrect}; socket.emit("door_result", result); if (partnerId){ io.to(partnerId).emit("door_result", result); } }); socket.on("disconnect", () => { console.log("Client deconnecte : ${socket.id}"); if (waitingPlayer === socket){ waitingPlayer = null; } }); }); server.listen(PORT, () => { console.log(`Serveur démarré sur http://localhost:${PORT}`); });