Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Mon serveur nodejs se réinitialise


Sujet :

NodeJS

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    developper
    Inscrit en
    mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developper
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : mars 2013
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Mon serveur nodejs se réinitialise
    Bonjour,
    j'ai un souci en Nodejs ,j'aimerais que quelqu'un puisse m'aider Merci bien.J'ai fait un chat en Nodejs pour m'initier.Mon problème est que :
    j'ouvre par exemple trois fenêtres du navigateur à l'adresse du serveur : localhsot:8080 et je fais connecter mes utlisateurs l'un après l'autre.
    Quand le deuxieme utilisateur se connecte ,le deuxième utilisateur est au courant du premier utilisateur ,puis le troisième est au courant du deuxième et du premier.jusque là tout va bien car j'utilise socket.broadcast.emit. Mais en ouvrant à nouveau une nouvelle fenêtre du navigateur à l'adresse du serveur :localhost:8080 pour connecter un quatrième utilisateur , alors ce dernier n'est plus au courant des utilisateurs précédemment connectés.Tandis que les précédents utilisateurs sont bel et bien au courant du quatrieme utilisateur connecté.C'est comme si le serveur se réinitialise en considérant le quatrième utilisateur comme le premier utilisateur connecté.J'ai pensé que c'est parce que je n'ai pas utlisé les sessions.Mais j'en ai utilisé et toujours rien ne marche.Si vous pouviez me guider merci.

  2. #2
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    4 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 303
    Points : 17 832
    Points
    17 832
    Par défaut
    IMHO t'as un bug.

    Sans ton code ça va être chaud de t'aider.
    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    developper
    Inscrit en
    mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developper
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : mars 2013
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Merci pour ta réponse Marco46 .Voici mon code si tu peux me dire le bug que j'ai merci.

    // app.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    var app = require('express')(),
      server  = require("http").createServer(app),
      io = require("socket.io")(server),
      session = require("express-session")({
        secret: "my-secret",
        resave: true,
        saveUninitialized: true
      }),
      sharedsession = require("express-socket.io-session");
      var clients= {};
      var messages = [];
     
      app.get('/', function(req, res) {
        res.sendFile(__dirname + '/public/index.html');
    });
     
    //io.use(sharedsession(session));
    io.use(sharedsession(session, {
        autoSave:true
    }));
     
    io.on("connection", function(socket) {
        // Accept a login event with user's data
        console.log('Un client est connecté !');
         socket.on('add-user', function(data){
            socket.handshake.session.data = data;
            socket.handshake.session.save();
            clients[data.username] = {
          "socket": socket.id
        };
        var user =socket.handshake.session.data.username;
        console.log("unnnn"+user);
        socket.broadcast.emit('allo',user);
     
        });
        socket.on("logout", function(userdata) {
            if (socket.handshake.session.userdata) {
                delete socket.handshake.session.userdata;
                socket.handshake.session.save();
            }
        }); 
        socket.on('private-message', function(data){
        console.log("Sending: " + data.message + " to " + data.usernames);
        if (clients[data.usernames]){
           console.log("leeeee" +socket.handshake.session.data.username);
           //console.log(typeof data);
           var x = [data];
           x.push(socket.handshake.session.data.username);
           console.log(x);
          io.sockets.connected[clients[data.usernames].socket].emit("add-message",x);
        } else {
          console.log("User does not exist: " + data.usernames); 
        }
      });       
    });
     
    server.listen(8080);

    // index.html
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Socket.io</title>
             <link rel="stylesheet" type="text/css" href="https://bootswatch.com/4/lux/bootstrap.min.css">
             <link rel="stylesheet" style="text/css" href="page.css" />
             <title>Bootstrap Example</title>
     
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
        </head>
     
        <body>
     
    </div>
       <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
      <a class="navbar-brand" href="#">Navbar</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor02" aria-controls="navbarColor02" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
     
      <div class="collapse navbar-collapse" id="navbarColor02">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item active">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Features</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Pricing</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">About</a>
          </li>
        </ul>
        <form class="form-inline my-2 my-lg-0">
          <input class="form-control mr-sm-2" type="text" placeholder="Search">
          <button class="btn btn-secondary my-2 my-sm-0" type="submit">Search</button>
        </form>
      </div>
     
    </nav>
    <div class="container">
      <div class="row">
        <div class="col-sm-4" >
     
        <div id="texto"></div>
     </div>
        <div class="col-sm-4" id="tchat">
          <form action="" id="loginform">
           <input type="text" name="iduser" id="iduser"/>
           <input type="submit" value="Join" id="join"/>
           </form>
             <div style="position:absolute; background-color: purple;">
             <form action="#" id="chatforms">
             <label>TO: </label><br />
             <input type=text name="username" id="username" />
             <div style="border:1px solid blue; background-color: silver; color: black; width: 150px;border-radius: 5px;" id="messages" ></div>
     
     
             <label></label>
             <input type="text" size="25" id="message" placeholder="Enter message" name="email">
             <button type="submit" class="btn btn-success" >Send <span class="badge"></span></button>
     
             </form>
             </div>
     
        </div>
        <div class="col-sm-4">
          <h3>Column 3</h3>        
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
          <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
        </div>
      </div>
     <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
     
            <script src="/socket.io/socket.io.js"></script>
            <script>
            var usercount = 1;
             $('#chatforms').hide(); // à l'ouverture de la page je cache le formulaire d'envoie de message
             $('#texto').hide(); // à l'ouverture de la page je cache les utilisateurs connectés
                var socket = io.connect('http://localhost:8080');
                var userid;
                socket.on('add-message', function(data) {
                    
                    insereMessage(data[1],data[0].message);
                    $('#chatforms').show();
                })
             $('#loginform').submit(function(event){
                userid=$('#iduser').val();
                if(userid == '')
                {
                  alert("veuillez donner votre pseudo");
                }
                else 
                {
                 $('#chatforms').hide(); 
                 $('#texto').show();
                
                $( "#iduser" ).prop( "disabled", true );
                $( "#join" ).prop( "disabled", true );
                 socket.emit("add-user", {username: userid});
                return false;
                }});
     
               $('#chatforms').submit(function(event){
                var messages =$('#message').val();
                var usernames=$('#username').val();
                alert("utilisateur est :" +usernames+ "messages est :"+messages);
                insereMessage(userid,messages);
                socket.emit("private-message", {usernames: usernames, message: messages});
                return false;
                
                });
     
                function insereMessage(pseudo, message)
                {
                  
              var montext = document.getElementById("messages");
              montext.innerHTML += "<p><strong style='color:blue;'>"+ pseudo+":</strong> "+message+"</p>";
                }
                function inserUser(pseudo)
                {
                   
                document.getElementById('texto').innerHTML += "<a href='#'id='us"+usercount+"'>"+pseudo+"</a> <br>";
                usercount++;
                    
                }
               socket.on('allo',function(data){
               inserUser(data);
                })
     
               $(document).on("click","a", function () {
                 var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id
                 alert(clickedBtnID);
                var valeur = document.getElementById(clickedBtnID).innerHTML;
                var unId = $("#us1").val();
                alert(unId+"fffff");
                alert(valeur);
                document.getElementById("username").value=valeur;
                $("#chatforms").show();
            
        })
         </script>
     
        </body>
     
    </html>

Discussions similaires

  1. [RMI] Impossible de lancer mon serveur
    Par Dahu dans le forum APIs
    Réponses: 11
    Dernier message: 11/06/2006, 10h17
  2. [Configuration] pb avec mon serveur sur intranet
    Par dehbi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 30/07/2004, 17h39
  3. [IB6] mon serveur crash apres des insert en série...
    Par Rmotte dans le forum Débuter
    Réponses: 11
    Dernier message: 27/05/2004, 15h53
  4. visibilite de mon serveur sur internet
    Par jabaka dans le forum Apache
    Réponses: 9
    Dernier message: 03/05/2004, 15h22
  5. Paramétrer le nombre de connexion sur mon serveur Mysql
    Par Zerga dans le forum Installation
    Réponses: 2
    Dernier message: 12/12/2003, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo