Créé dans le cadre du projet de fin d'année de la promo 2018 de CIR2 de l'ISEN Brest/Rennes, le Burger Quizz est une adaptation numérique du jeu télévisé éponyme, plus précisément d'une épreuve spécifique de ce jeu : le "Sel ou Poivre".

server.js 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. var io = require('socket.io'); // Chargement du module pour mettre en place les websockets
  2. var http = require('http');
  3. var json;
  4. // Variables
  5. var server; // Le socket
  6. var lobby = [];
  7. var games = [];
  8. // Gestion des evenements
  9. // Attend l'évènement "connection"
  10. // Le client génère cet évènement lorsque la connexion est établie avec le serveur (voir l'établissement de connexion côté client)
  11. // En cas de connexion appel à la fonctione onSocketConnection
  12. // Un paramètre est envoyé en paramètre de l'évènement "connection" : ce paramètre représente le client
  13. var setEventHandlers = function() {
  14. server.sockets.on("connection", onSocketConnection);
  15. };
  16. function apiReq() {
  17. http.get("http://localhost/burger-quizz/web/api/", function(res) {
  18. var data = "";
  19. res.on("data", function(returned) {
  20. data += returned;
  21. })
  22. res.on("end", function() {
  23. json = JSON.parse(data.toString());
  24. })
  25. });
  26. }
  27. // Fonction prenant en paramètre le client (voir ci-dessus)
  28. // Réception ou envoi d'évènement à partir de cet objet : client
  29. function onSocketConnection(client) {
  30. // Attente de l'évènement "new"
  31. // Dans cet exemple l'évènement "new" est envoyé avec un paramètre "pseudo"
  32. client.on('nouveau', function(pseudo) {
  33. // Log pour debug
  34. console.log('Nouveau joueur : '+ pseudo +' !');
  35. // Envoi d'un message au client
  36. //client.emit('message', 'bien reçu !!');
  37. if(lobby.length > 0) {
  38. games.push({joueur1: lobby[0], joueur2: {login: pseudo, socket: client}, idGame: games.length, json: ''});
  39. games[games.length-1].joueur1.socket.emit("game", [games[games.length-1].joueur2.login, games[games.length-1].idGame]);
  40. games[games.length-1].joueur2.socket.emit("game", [games[games.length-1].joueur1.login, games[games.length-1].idGame]);
  41. lobby = [];
  42. } else {
  43. lobby.push({login: pseudo, socket: client});
  44. }
  45. // Envoi d'un message aux autres clients connectés
  46. //client.broadcast.emit('autres', pseudo);
  47. });
  48. client.on('error', function(err) {
  49. console.log(err);
  50. });
  51. client.on('start', function(gameID) {
  52. if(!games[gameID].json) {
  53. console.log("slt");
  54. apiReq();
  55. games[gameID].json = json;
  56. }
  57. console.log(json);
  58. client.emit('questions', games[gameID].json);
  59. });
  60. };
  61. // Initialisation
  62. function init() {
  63. // Le server temps réel écoute sur le port 8000
  64. server = io.listen(8000);
  65. // Gestion des évènements
  66. setEventHandlers();
  67. };
  68. // Lance l'initialisation
  69. init();