pendu fini (td3)
This commit is contained in:
60
TD/TD3/pendu/serveur.js
Normal file
60
TD/TD3/pendu/serveur.js
Normal file
@@ -0,0 +1,60 @@
|
||||
const fetch = require('node-fetch');
|
||||
const WebSocket = require('ws');
|
||||
var word;
|
||||
var game;
|
||||
|
||||
function getRandomInt(max) {
|
||||
return Math.floor(Math.random() * max);
|
||||
}
|
||||
|
||||
function getWordSize() {
|
||||
return JSON.stringify(["Taille", word.length]);
|
||||
}
|
||||
|
||||
function displayLetter(char) {
|
||||
return JSON.stringify(["Char", char, word.indexOf(char)]);
|
||||
}
|
||||
|
||||
// On créé notre Web Serveur qui écoute sur le port 8080
|
||||
const wss = new WebSocket.Server({
|
||||
port: 8080
|
||||
});
|
||||
|
||||
fetch('http://localhost:3001/mots') // une requete GET
|
||||
.then((response) => { // lorsque la requête est terminée on traite la réponse
|
||||
response.json() // que l’on passe en JSON
|
||||
.then((mots) => { // On fois fait on peut travailler sur la liste des mots
|
||||
word = mots[getRandomInt(Object.keys(mots).length)].value; //on choisi aléatoirement le mot dans la liste mots
|
||||
console.log("Mot choisi : " + word); //on l'affiche sur notre console serveur pour tester plus facilement
|
||||
game = word.length;
|
||||
}
|
||||
);
|
||||
}).catch(error => console.error);
|
||||
|
||||
|
||||
|
||||
// Lorsqu'un client se connecte on reçoit un événement 'connection'
|
||||
wss.on('connection', ws => {
|
||||
|
||||
ws.send(getWordSize());
|
||||
|
||||
// Lorsqu'il nous envoie un message on reçoit un événement message ainsi que le message !
|
||||
ws.on('message', message => {
|
||||
console.log(`Received message => ${message}`);
|
||||
let char = message.charAt(1);
|
||||
|
||||
if(word.indexOf(char) > -1) {
|
||||
game--;
|
||||
ws.send(displayLetter(char));
|
||||
if(game === 0) {
|
||||
ws.send(JSON.stringify(["Partie", true]));
|
||||
}
|
||||
} else {
|
||||
ws.send(JSON.stringify(["CharError"]));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
})
|
||||
Reference in New Issue
Block a user