Advertisement
Guest User

Serveur

a guest
Nov 24th, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Gaëtan Bervet ID4 : TP3 PokéJax
  3. */
  4. "use strict";
  5.  
  6. var http = require('http');
  7. var url = require('url');
  8. var pokedex = require('pokemon.json');
  9. var routing = require("moduleRouting");
  10. var querystring = require('querystring');
  11.  
  12. var WebSocketServer = require('ws').Server;
  13. var wss = new WebSocketServer({port: 8000});
  14.  
  15. var pokedexLength = 151;
  16. var userTab = [pokedexLength];
  17. for (var i = userTab.length - 1; i >= 0; i--) {
  18.   userTab[i] = new Array();
  19. };
  20.  
  21. var nbUserStatic = 0;
  22.  
  23. // Objet utilisateur
  24. /*function User(id, message){
  25.   this.id = staticId ++;
  26.   this.message = "";
  27. }*/
  28.  
  29. //Objet message
  30. function Message(ident, message){
  31.   this.id = ident;
  32.   this.message = message;
  33. }
  34.  
  35. //Objet paquet permettant de recevoir une chatRoom ou un message
  36. function paquet(pokemon, type){
  37.   this.type = type;
  38.   this.content = pokemon;
  39. }
  40.  
  41. //Compte le nombre d'utilisateurs connectés
  42. /*function userCount(){
  43.   var nbUser = 0;
  44.   for (var i = userTab.length - 1; i >= 0; i--) {
  45.     if(userTab[i]!=null){
  46.       nbUser ++;
  47.     }
  48.   };
  49.   return nbUser;
  50. }*/
  51.  
  52. //fonction broadcast du dernier message reçu
  53. function sendMessageToAll(message, socket){
  54.   userTab[socket.chatRoom.content].forEach(function(socketTMP)
  55.   {
  56.     socketTMP.send(JSON.stringify(message));
  57.   });
  58.   /*for (var i = userTab[socket.chatRoom.content].length - 1; i >= 0; i--) {
  59.     userTab[socket.chatRoom.content][i].send(JSON.stringify(message));
  60.   };*/
  61. }
  62.  
  63. //Rangement du socket selon sa chatRoom
  64. function pushSocket(ws){
  65.   userTab[ws.chatRoom.content].push(ws);
  66. }
  67.  
  68. wss.on('connection', function (ws) {
  69.   console.log("connection demandée");
  70.  
  71.   ws.ident = nbUserStatic ++;
  72.  
  73.   ws.on('message', function (message) {
  74.     console.log('received: ', message);
  75.  
  76.     var messageReceived = JSON.parse(message);
  77.  
  78.     if( messageReceived.type == "chatRoom"){
  79.       var chatRoom = messageReceived;
  80.       ws.chatRoom = chatRoom;
  81.       pushSocket(ws);
  82.       var m = new Message("Admin", "bonjour " + ws.ident);
  83.       sendMessageToAll(m,ws);
  84.     }
  85.  
  86.     else if (messageReceived.type == "message") {
  87.       var mess = new Message();
  88.       mess.id = ws.ident;
  89.       mess.message = messageReceived.content;
  90.  
  91.       console.log(mess.id + "envoie un message");
  92.  
  93.       sendMessageToAll(mess, ws);
  94.     };
  95.   });
  96.   console.log("connection demandée");
  97.  
  98.   //ws.send('something');
  99. });
  100.  
  101. function contains(str1, str2)
  102. {
  103.     var i = 0;
  104.     var result = true;
  105.     while(i<str1.length)
  106.     {
  107.       if (str2.charAt(i) != str1.charAt(i)) {result = false;}
  108.       i++;
  109.     }
  110.     return result;
  111. }
  112.  
  113. var poketri = pokedex.map(function(pokemon){
  114. return {
  115.    ndex: pokemon.ndex,
  116.    nom: pokemon.nom,
  117.    type: pokemon.type1
  118. }
  119. });
  120.  
  121. var selectPokemons = function(req, rep){
  122.   var poke;
  123.   var query = querystring.parse(url.parse(req.url).query);
  124.  
  125.   if("nom" in query)
  126.   {
  127.     /*var i = 0;
  128.     while(!contains(query.nom,pokedex[i].nom) && i < pokedex.length)
  129.     {
  130.       i++;
  131.     }
  132.     poke = pokedex[i];*/
  133.     var poke = poketri.filter(function(row) {
  134.     //if (row.Nom.indexOf(requete)>=0) return true;
  135.     return contains(query.nom,row.nom);
  136.     });
  137.   }
  138.   rep.writeHead(200, {
  139.       'Content-Type': 'application/json'
  140.   });
  141.   rep.end(JSON.stringify(poke));
  142.   return;
  143. }
  144.  
  145. var notFound = function notFound (request, response) {
  146.   console.log("Entrée dans le callback : notFound()")
  147.   response.writeHead(404, {"Content-Type": "text/plain"});
  148.   response.write("404 Not Found\n");
  149.   response.end();
  150.   return;
  151. };
  152.  
  153. http.createServer(
  154.  routing.createRoutingFunction([
  155.  {re:/^\/$/, fi:'../client/index.html',},
  156.  {re:/selectPokemons\?/, cb:selectPokemons,},
  157.  {re:/.*/, cb:notFound,}
  158.  ]
  159.  )
  160. ).listen(8080);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement