Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Node.js : c'est parti !

    22 novembre 2014 à 12:56:16

    Bonjour tout le monde, 

    J'ai ouvert un sujet sur le TP de la semaine 3 , la todolist en temps réelle.

    Elle fonctionne en partie mais je bloque sur un truc .

    http://openclassrooms.com/forum/sujet/node-js-et-socket-io-tp-semaine-3-aide 

    Si quelqu'un pouvait jeter un oeil, ce serait super super sympa !!!! Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2014 à 3:27:53

      Je débute ce cours qui me semble clair, pourtant une première ombre apparaît, je cite : 

      "Si vous savez ce que vous cherchez, le site web de NPM vous permet de faire une recherche. Mais NPM, c'est avant tout une commande ! Vous pouvez faire une recherche dans la console, comme ceci :

      <samp style="box-sizing: border-box; padding: 6px; display: block; white-space: inherit; line-height: 18px; font-family: Monaco, Menlo, 'Ubuntu Mono', Consolas, source-code-pro, 'Droid Sans Mono', monospace;">npm search postgresql</samp>

      ... "

      De quelle console parle-t-on ?

      Pas de celle de node.js, puisqu'elle renvoi une erreur : Error: ENOENT, stat...

      Autre ombre" : http://nodetoolbox.com/ = Page Web inaccessible

      Merci de ces précisions


      MarCaï

      • Partager sur Facebook
      • Partager sur Twitter

      Mon grand père disait : "Rien n'est ni beau, ni laid, ni bon, ni mauvais mais simplement ce que l'on aime ou pas !"

        2 décembre 2014 à 7:46:58

        la console Windows si bien sur tu es sous Windows

        Va dans exécuté puis tape cmd et entrée

        • Partager sur Facebook
        • Partager sur Twitter
        La vérité est ailleurs !!
          2 décembre 2014 à 18:21:20

          @marcaï : je rajouterais :

          sur la console du système d'exploitation que tu utilise (windows, linux, mac os).

          -
          Edité par Manuel CQE 2 décembre 2014 à 18:24:34

          • Partager sur Facebook
          • Partager sur Twitter

          L’éternel débutant...

          Anonyme
            15 décembre 2014 à 21:54:43

            Bonjour,

            Je bloque à la partie socket.io, je m'explique :

            Il demande de taper un code 

            var http = require('http');
            var fs = require('fs');
            
            // Chargement du fichier index.html affiché au client
            var server = http.createServer(function(req, res) {
                fs.readFile('./index.html', 'utf-8', function(error, content) {
                    res.writeHead(200, {"Content-Type": "text/html"});
                    res.end(content);
                });
            });
            
            // Chargement de socket.io
            var io = require('socket.io').listen(server);
            
            // Quand on client se connecte, on le note dans la console
            io.sockets.on('connection', function (socket) {
                console.log('Un client est connecté !');
            });
            
            
            server.listen(8080);

            La partie html, j'ai essayé d'inclure socket.io pour voir, mais aucun résultat..

            <!DOCTYPE html>
            <html>
                <head>
                    <meta charset="utf-8"/>
                    <title>Socket.IO</title>
                </head>
                <body>
                    <h1>Socket IO Communication !</h1>
                    
                    <p><input type="button" value="tryit" id="poke" /></p>
                    
                    <script src="/socket.io/socket.io.js"></script>
                    <script>
                        var io = require('socket.io');
                        var socket = io.connect('https://artetests-artemix.c9.io:8000/');
                        socket.on('message', function(message) {
                            alert('Le serveur a un message pour vous : ' + message);
                        });
                        $('#poke').click(function() {
                            socket.emit('message', 'hello server');
                        });
                    </script>
                </body>
            </html>



            mais, j'ai beau charger et recharger la page, impossible d'avoir un retour console.

            la console ne m'affiche même pas 

              info  - socket.io started
               debug - client authorized
               info  - handshake authorized Z2E7aqIvOPPqv_XBn421
               debug - setting request GET /socket.io/1/websocket/Z2E7aqIvOPPqv_XBn421
               debug - set heartbeat interval for client Z2E7aqIvOPPqv_XBn421
               debug - client authorized for 
               debug - websocket writing 1::

            Node version 0.10.33

            socket.io version 1.2.1

            Voici ce que m'affiche la console lorsque je lance le serveur

            ps: je travaille sur un workspace c9, mais j'ai aussi testé en local et j'obtiens exactement le même résultat..

            Si quelqu'un avait une quelconque solution afin de rendre ce cours fonctionnel chez moi, ou un lien vers un autre site proposant un cours sur socket.io, je suis preneur !

            (j'ai cherché d'autres tutoriels, guides et cours sur le web mais ça retombait quasiment toujours ici, ou alors les cours proposés ne correspondaient pas.

            -
            Edité par Anonyme 15 décembre 2014 à 21:58:12

            • Partager sur Facebook
            • Partager sur Twitter
              16 décembre 2014 à 10:35:55

              Hello,

              J'ai fini le cours et fait tous les quiz et activités, pourtant  je me connecte aujourd'hui et je ne suis plus inscrit au cours, je n'ai reçu aucun mail, y a t'il eu un problème ?

              • Partager sur Facebook
              • Partager sur Twitter
                16 décembre 2014 à 12:39:04

                Salut Artemix,

                Si tu regardes la console du navigateur, côté client, tu verras probablement une erreur du type Uncaught ReferenceError: require is not defined pour la ligne 14 de ton html.

                En effet, la fonction require n'est pas présente chez le client. La variable globale io est définie par le script socket.io.js inclus en ligne 12

                • Partager sur Facebook
                • Partager sur Twitter
                  18 décembre 2014 à 13:33:26

                  bonjour j'ai besoin de vous aides  svp , comment générer un tableau html et sa structure correspondante en fonction des filtres sélectionnés par le client (en utilisant javascript).
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 décembre 2014 à 11:02:34

                    lien vers la communauté javascript france =>    https://www.facebook.com/javascript.fr
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      26 décembre 2014 à 11:19:10

                      a5er a écrit:

                      Salut Artemix,

                      Si tu regardes la console du navigateur, côté client, tu verras probablement une erreur du type Uncaught ReferenceError: require is not defined pour la ligne 14 de ton html.

                      En effet, la fonction require n'est pas présente chez le client. La variable globale io est définie par le script socket.io.js inclus en ligne 12


                      Même avec l'include, je n'ai aucune erreur, très étrange...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 janvier 2015 à 11:45:03

                        Bonjour et merci pour ce cours très pertinent !

                        Une belle mise à niveau pour moi qui n'avais pas encore eu le temps de m'y mettre...

                        Juste une remarque de méga pinaillage, javascript est bien un langage orienté objet contrairement à ce qui est écrit, il n'est absolument pas structuré comme java ou autre en effet (basé sur les prototypes) mais c'est un langage objet !

                        Merci encore pour ce cours très clair

                        a+

                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 janvier 2015 à 8:17:20

                          Bonjour,

                          j'ai utilisé javascript pour faire tourner des photos sur ma  bannière  . Mon code css est
                          img
                          {
                              width:900px;
                              height:250px;
                              display: inline-block;
                               margin-top: 5px;
                               margin-bottom: 5px;
                               margin-left: 175px;
                               border-radius: 15px;
                               box-shadow: 0px 4px 4px #1c1a19;
                          }
                          Du coup je ne peux plus mettre d'autres photos sur ma page car elle prennent le même format (même avec un Id ). Merci pour votre réponse.
                          A+
                          Claudio
                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 janvier 2015 à 8:18:40

                            Désolé pour la question

                            Claudio

                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 janvier 2015 à 13:39:45

                              bonjour , j'ai un problème au niveau de stocker et afficher des informations json dans un tableau javascript , comment le faire merci d'avance :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 janvier 2015 à 12:19:34

                                Salut les développeurs,

                                Je suis actuellement le cours et j'ai un problème.

                                Dans la partie "socket.io", lorsque j'essai de tester le code, rien ne s'affiche dans la console et à l'adresse http://localhost:8080 j'ai une page blanche. 

                                Je n'arrive vraiment pas à savoir pourquoi.

                                Pourriez-vous m'aider ?

                                Merci d'avance

                                ===============================

                                Problème résolu !!! Merci à tous quand même.

                                ===============================

                                -
                                Edité par Tutut 15 janvier 2015 à 14:34:34

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 janvier 2015 à 17:35:33 - Message modéré pour le motif suivant : Message complètement hors sujet


                                    27 janvier 2015 à 12:46:37

                                    bonjour , j'ai besoin de vous aides s'il te plait  j'ai un tableau comme ça :

                                       var r1 = new Record("2014-01-01", "Maroc", "Rabat", "Diesel", "100", "10000");

                                                var r2 = new Record("2014-01-01", "Maroc", "Rabat", "Essence", "100", "10000");

                                                var r3 = new Record("2014-08-01", "Maroc", "Rabat", "Essence", "50", "2500");

                                                var r4 = new Record("2014-02-01", "Maroc", "Casablanca", "Essence", "50", "2500");

                                                var r5 = new Record("2014-07-01", "Maroc", "Casablanca", "Diesel", "90", "9000");

                                                var r6 = new Record("2014-02-01", "Maroc", "Casablanca", "Essence", "50", "2500");

                                                var r7 = new Record("2014-04-01", "Maroc", "Marrakech", "Essence", "50", "2500");

                                                var r8 = new Record("2014-06-01", "Maroc", "Marrakech", "Essence", "50", "2500");

                                                var r9 = new Record("2014-06-01", "Maroc", "Marrakech", "Diesel", "70", "7000");

                                                var r10 = new Record("2014-03-01", "Maroc", "Casablanca", "Diesel", "80", "8000");

                                    et j'ai besoin de calculer les champs identique qu'il a la même date par exemple  r1 et r2 ils sont identiques , j'ai besoin de calculer les 2 dernier champ qui ont les nombre 100 , 1000 par une fonction somme , merci d'avance 

                                    -
                                    Edité par chakourhatim 27 janvier 2015 à 12:48:05

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 février 2015 à 13:33:01

                                      Tu devra voir un script d'une calculatrice pour voir comment ça fonctionne et mieux gérer les variables. Pour mon cas, quand je suis bloqué je prends conseil auprès des connaisseurs.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        6 février 2015 à 12:31:55

                                        Salut Les Nodejsois, 

                                        mon probleme est +/- simple: J'arrive pas à lancer le Chat sur le port demandé.

                                        Je m'explique: Quand je lance le serveur et vais sur la page présumée ( dans mon cas localhost:2901), je recois juste le message (Chat server works !!). 

                                        J'ai essayé de mettre mon code avant la res.end mais ca change rien.

                                        C'est où l'erreur ?

                                        voici la page appserver.js 

                                        var http = require('http');
                                        
                                        var md5 = require('MD5');
                                        
                                         
                                        
                                         
                                        
                                        httpServer = http.createServer(function(req, res) {
                                        
                                        res.end("Chat server works !!");
                                        
                                        });
                                        
                                        httpServer.listen("2901"); //Listen to port 2901
                                        
                                         
                                        
                                         
                                        
                                        var io = require('socket.io').listen(httpServer);
                                        
                                        var usersConnected = {}; 
                                        
                                        var messagesPosted = [];
                                        
                                        var history = 2; 
                                        
                                         
                                        
                                        //Listening
                                        
                                        io.sockets.on('connection', function(socket) { //User calls the website
                                        
                                        var me=false;
                                        
                                         
                                        
                                        for(var user in usersConnected)
                                        
                                        {
                                        
                                        socket.emit("newUser", usersConnected[user]);
                                        
                                        }
                                        
                                        for(var msg in messagesPosted)
                                        
                                        {
                                        
                                        socket.emit("newMsg", messagesPosted[msg]);
                                        
                                        }
                                        
                                        socket.on('login', function(user) {
                                        
                                         
                                        
                                        me = user;
                                        
                                        me.id = user.mail.replace("@", "_").replace(/\./g, "_");
                                        
                                        me.avatar = "https://gravatar.com/avatar/" + md5(user.mail) + "?s=50";
                                        
                                        usersConnected[me.id] = me; 
                                        
                                         
                                        
                                        io.sockets.emit("newUser", me); 
                                        
                                        socket.emit("logged", me);
                                        
                                        });
                                        
                                         
                                        
                                        socket.on('disconnect', function(){
                                        
                                        if(!me) return false; 
                                        
                                        io.sockets.emit("disconnectUser", me); 
                                        
                                        delete usersConnected[me.id]; 
                                        
                                        });
                                        
                                        
                                        socket.on("newMsg", function(message){
                                        
                                         
                                        
                                        if(!me) { 
                                        
                                        socket.emit("errMsgNoLog");
                                        
                                        return;
                                        
                                        }
                                         
                                        
                                        message.user = me; 
                                        
                                        date = new Date();
                                        
                                        message.h = date.getHours(); 
                                        
                                        message.m = date.getMinutes() 
                                        
                                        
                                        messagesPosted.push(message);
                                        
                                        
                                        
                                        if(messagesPosted.length > history)
                                        
                                        {
                                        
                                        messagesPosted.shift();//Delete the oldest saved message 
                                        
                                        }
                                        
                                        io.sockets.emit("newMsg", message); }); 
                                        
                                        });
                                        
                                         



                                        -
                                        Edité par Mizu27 7 février 2015 à 11:58:35

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          7 février 2015 à 8:25:40

                                          Bonjour,

                                          j'ai  résolu le probleme en mettant un ptit sendFile à la place du res.end (logique vous me dites !)

                                          app.get('/', function (req, res) {
                                          
                                            res.sendFile(__dirname + '/index.html');
                                          
                                          });
                                          



                                          Maintenant je peux acceder  à ma page à travers le port désiré, mais l'affichage css n'est plus là.
                                          Il y a un changement à faire coté client, mais j'arrive pas à trouver la faille :/

                                          -
                                          Edité par Mizu27 7 février 2015 à 11:56:32

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            15 février 2015 à 18:48:36

                                            hello
                                            i want to create a thread with nodeJs but i didn't find any document to help me.just i find that nodeJs didn't support multiThreading
                                            help me please
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              20 février 2015 à 18:50:10

                                              Mizu27 a écrit:

                                              Salut Les Nodejsois, 

                                              mon probleme est +/- simple: J'arrive pas à lancer le Chat sur le port demandé.

                                              Je m'explique: Quand je lance le serveur et vais sur la page présumée ( dans mon cas localhost:2901), je recois juste le message (Chat server works !!). 

                                              J'ai essayé de mettre mon code avant la res.end mais ca change rien.

                                              C'est où l'erreur ?

                                              voici la page appserver.js 

                                              var http = require('http');
                                              
                                              var md5 = require('MD5');
                                              
                                               
                                              
                                               
                                              
                                              httpServer = http.createServer(function(req, res) {
                                              
                                              res.end("Chat server works !!");
                                              
                                              });
                                              
                                              httpServer.listen("2901"); //Listen to port 2901
                                              
                                               
                                              
                                               
                                              
                                              var io = require('socket.io').listen(httpServer);
                                              
                                              var usersConnected = {}; 
                                              
                                              var messagesPosted = [];
                                              
                                              var history = 2; 
                                              
                                               
                                              
                                              //Listening
                                              
                                              io.on('connection', function(socket) { //User calls the website
                                              
                                              var me=false;
                                              
                                               
                                              
                                              for(var user in usersConnected)
                                              
                                              {
                                              
                                              socket.emit("newUser", usersConnected[user]);
                                              
                                              }
                                              
                                              for(var msg in messagesPosted)
                                              
                                              {
                                              
                                              socket.emit("newMsg", messagesPosted[msg]);
                                              
                                              }
                                              
                                              socket.on('login', function(user) {
                                              
                                               
                                              
                                              me = user;
                                              
                                              me.id = user.mail.replace("@", "_").replace(/\./g, "_");
                                              
                                              me.avatar = "https://gravatar.com/avatar/" + md5(user.mail) + "?s=50";
                                              
                                              usersConnected[me.id] = me; 
                                              
                                               
                                              
                                              socket.emit("newUser", me); 
                                              
                                              socket.emit("logged", me);
                                              
                                              });
                                              
                                               
                                              
                                              socket.on('disconnect', function(){
                                              
                                              if(!me) return false; 
                                              
                                              socket.emit("disconnectUser", me); 
                                              
                                              delete usersConnected[me.id]; 
                                              
                                              });
                                              
                                              
                                              socket.on("newMsg", function(message){
                                              
                                               
                                              
                                              if(!me) { 
                                              
                                              socket.emit("errMsgNoLog");
                                              
                                              return;
                                              
                                              }
                                               
                                              
                                              message.user = me; 
                                              
                                              date = new Date();
                                              
                                              message.h = date.getHours(); 
                                              
                                              message.m = date.getMinutes() 
                                              
                                              
                                              messagesPosted.push(message);
                                              
                                              
                                              
                                              if(messagesPosted.length > history)
                                              
                                              {
                                              
                                              messagesPosted.shift();//Delete the oldest saved message 
                                              
                                              }
                                              
                                              socket.emit("newMsg", message); }); 
                                              
                                              });
                                              
                                               


                                              Bonjour,

                                              Essaye le code, je l'ai changé. Ce qui n'allait pas c'est que tu charge ton module socket.io dans une variable io. Donc tu dois utilisé io.on('connection', function{[...]}). Et après, tu dois utiliser socket.emit() ou socket.on(). Et un petit dernier conseil, indente ton code, je sais pas si c'est parce que tu as copié collé mais tu veras ça sera beaucoup plus lisible.

                                              J'espère t'avoir aider ;)

                                              -
                                              Edité par romain901 20 février 2015 à 18:52:58

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                20 février 2015 à 22:00:18

                                                sassousassou a écrit:

                                                hello
                                                i want to create a thread with nodeJs but i didn't find any document to help me.just i find that nodeJs didn't support multiThreading
                                                help me please


                                                Hi sassousassu,

                                                Node.js is only single thread...in theory. I just found an article about your question : Node is not Single Thread
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  22 février 2015 à 3:27:52

                                                  Mizu27 a écrit:

                                                  Bonjour,

                                                  j'ai  résolu le probleme en mettant un ptit sendFile à la place du res.end (logique vous me dites !)

                                                  app.get('/', function (req, res) {
                                                  
                                                    res.sendFile(__dirname + '/index.html');
                                                  
                                                  });
                                                  



                                                  Maintenant je peux acceder  à ma page à travers le port désiré, mais l'affichage css n'est plus là.
                                                  Il y a un changement à faire coté client, mais j'arrive pas à trouver la faille :/

                                                  -
                                                  Edité par Mizu27 le 7 février 2015 à 11:56:32



                                                  Hello

                                                  Je n'ai pas vu tout ton code, mais en me basant sur ce que je vois, je pourrais deviner qu'il te faut servir les ressources statiques de ton site.

                                                  En gros, la route / sert le fichier index.html parce que tu le fais de manière explicite avec res.sendFile(__dirname + '/index.html'); 
                                                  Maintenant imagine que tu doive faire la même chose avec tes CSS, images, ... etc.
                                                  C'est pour cela qu'on utilise généralement un middleware pour gérer les ressources statiques :

                                                  var path = require('path');
                                                  
                                                  app.use(express.static(path.join(__dirname, 'public')));
                                                  
                                                  app.get('/', function(req, res) {
                                                    // [...]
                                                    res.sendFile(path.join(__dirname, 'index.html'));
                                                  });

                                                  Note : Prendre l'habitude d'utiliser path.join() pour concaténer les chemins d'accès sur disque (http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2)

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    9 mars 2015 à 2:14:51

                                                    Bonjour! Je crois que dans le cour sur la page http://openclassrooms.com/courses/des-applications-ultra-rapides-avec-node-js/les-evenements-18 il y aurais une faute de 'ponctuation' si je peux dire dans l'exemple:

                                                    var http = require('http');
                                                    
                                                    var server = http.createServer(function(req, res) {
                                                      res.writeHead(200);
                                                      res.end('Salut tout le monde !');
                                                    });
                                                    
                                                    server.on('close', function() { // On écoute l'évènement close
                                                        console.log('Bye bye !');
                                                    })
                                                    
                                                    server.listen(8080); // Démarre le serveur
                                                    
                                                    server.close(); // Arrête le serveur. Déclenche l'évènement close

                                                     5 lignes avant la fin il manque le ' ; ' j'ai essayé avec et sans et fonctionne très bien mais je veux être certain de si j'ai raison. Si oui proposé la correction.

                                                    Merci!

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      9 mars 2015 à 18:27:17

                                                      Le ; qui précède un } est optionnel en JS.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        17 mars 2015 à 14:16:07

                                                        Bonjour,

                                                        j'ai un soucis avec mon application; les données sont bien envoyés au serveur mais au moment de les renvoyés au client firefox m'affiche un message à propos du cross-origin-request (CORS). J'ai essayé d'ajouter le writeHead('Access-Control-Allow-Origin': '*') mais ça fonctionne pas.

                                                        Avez-vous une idée?

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          19 mars 2015 à 19:01:38

                                                          Bonjour, désolé de taper l'incruste,

                                                          Je recherche un petit groupe de personne de niveau débutant-intermédiaire en JavaScript pour faire des mini-projets en JS ou d'autres languages. Chat interactif, horloge, etc.

                                                          Je suis débutant en JS mais pas en programmation (je connais les bases du shell Unix, j'ai fait pas mal de programmation en Ada auparavant.).

                                                          À bon entendeur, salut :)

                                                          teddydi

                                                          theodoronido@gmail.com

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          theodoronido@gmail.com
                                                            31 mars 2015 à 22:51:29

                                                            tchek a écrit:

                                                            Bonjour,

                                                            j'ai un soucis avec mon application; les données sont bien envoyés au serveur mais au moment de les renvoyés au client firefox m'affiche un message à propos du cross-origin-request (CORS). J'ai essayé d'ajouter le writeHead('Access-Control-Allow-Origin': '*') mais ça fonctionne pas.

                                                            Avez-vous une idée?


                                                            En plus de l'origine, as-tu ajouté les méthodes ?

                                                                res.setHeader('Access-Control-Allow-Origin', '*');
                                                                res.setHeader('Access-Control-Allow-Methods', 'GET, POST');

                                                            (Utilisant Express, je fais du setHeader)

                                                            Tu as peut être également ton 'Access-Control-Allow-Header' à paramétrer... ?

                                                            res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization');

                                                            Une liste des headers paramétrables : http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

                                                            Reviens nous dire si tu as du mieux :)

                                                            Ciao.



                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Apprendre peut être long et difficile, mais abandonner n'accélère certainement pas le processus.
                                                              2 avril 2015 à 10:06:55 - Message modéré pour le motif suivant : Toute forme de publicité est interdite


                                                              Cours Node.js : c'est parti !

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown