60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
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"]));
|
||
}
|
||
|
||
});
|
||
|
||
|
||
|
||
}) |