IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Application de chat avec NodeJs


Sujet :

NodeJS

  1. #1
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2011
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 342
    Points : 124
    Points
    124
    Par défaut Application de chat avec NodeJs
    Bonjour,
    j'ai suit un tutoriel d'une application de chat en temps réel avec nodeJS,mais j'ai toujours ces erreurs:

    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
    C:\xampp\htdocs\chat>node app.js
       info  - socket.io started
    Express server listening on port 3000
    GET /chat 200 210ms - 686
     
    http.js:690
        throw new Error('Can\'t set headers after they are sent.');
              ^
    Error: Can't set headers after they are sent.
        at ServerResponse.OutgoingMessage.setHeader (http.js:690:11)
        at ServerResponse.res.setHeader (C:\xampp\htdocs\chat\node_modules\express\n
    ode_modules\connect\lib\patch.js:59:22)
        at next (C:\xampp\htdocs\chat\node_modules\express\node_modules\connect\lib\
    proto.js:153:13)
        at Function.app.handle (C:\xampp\htdocs\chat\node_modules\express\node_modul
    es\connect\lib\proto.js:198:3)
        at Server.app (C:\xampp\htdocs\chat\node_modules\express\node_modules\connec
    t\lib\connect.js:66:31)
        at Manager.handleRequest (C:\xampp\htdocs\chat\node_modules\socket.io\lib\ma
    nager.js:564:28)
        at Server.<anonymous> (C:\xampp\htdocs\chat\node_modules\socket.io\lib\manag
    er.js:118:10)
        at Server.emit (events.js:117:20)
        at HTTPParser.parser.onIncoming (http.js:2113:12)
        at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:122:23
    )
    les dépendances:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
      "name": "application-name",
      "version": "0.0.1",
      "private": true,
      "scripts": {
        "start": "node app.js"
      },
      "dependencies": {
        "express": "3.0.0rc4",
        "socket.io": "0.9.10",
        "jade": "*"
      }
    }
    et le fichier 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
    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
    var express = require('express')
      , routes = require('./routes')
      , user = require('./routes/user')
      , chat = require('./routes/chat')
      , socketio = require('socket.io')
      , http = require('http')
      , path = require('path');
     
    var app = express();
     
    app.configure(function(){
      app.set('port', process.env.PORT || 3000);
      app.set('views', __dirname + '/views');
      app.set('view engine', 'jade');
      app.use(express.favicon());
      app.use(express.logger('dev'));
      app.use(express.bodyParser());
      app.use(express.methodOverride());
      app.use(app.router);
      app.use(express.static(path.join(__dirname, 'public')));
    });
     
    app.configure('development', function(){
      app.use(express.errorHandler());
    });
     
    app.get('/', routes.index);
    app.get('/chat', chat.main);
    app.get('/users', user.list);
     
    var server = app.listen(app.get('port'), function(){
      console.log("Express server listening on port " + app.get('port'));
    });
     
    var io = socketio.listen(server);
     
    var clients = {};
    var socketsOfClients = {};
     
    io.sockets.on('connection', function(socket) {
      socket.on('set username', function(userName) {
        // Is this an existing user name?
        if (clients[userName] === undefined) {
          // Does not exist ... so, proceed
          clients[userName] = socket.id;
          socketsOfClients[socket.id] = userName;
          userNameAvailable(socket.id, userName);
          userJoined(userName);
        } else
        if (clients[userName] === socket.id) {
          // Ignore for now
        } else {
          userNameAlreadyInUse(socket.id, userName);
        }
      });
     
      socket.on('message', function(msg) {
        var srcUser;
        if (msg.inferSrcUser) {
          // Infer user name based on the socket id
          srcUser = socketsOfClients[socket.id];
        } else {
          srcUser = msg.source;
        }
        if (msg.target == "All") {
          // broadcast
          io.sockets.emit('message',
              {"source": srcUser,
               "message": msg.message,
               "target": msg.target});
        } else {
          // Look up the socket id
          io.sockets.sockets[clients[msg.target]].emit('message', 
              {"source": srcUser,
               "message": msg.message,
               "target": msg.target});
        }
      })
     
      socket.on('disconnect', function() {
          var uName = socketsOfClients[socket.id];
          delete socketsOfClients[socket.id];
        delete clients[uName];
        // relay this message to all the clients
        userLeft(uName);
      })
    })
     
    function userJoined(uName) {
        Object.keys(socketsOfClients).forEach(function(sId) {
            io.sockets.sockets[sId].emit('userJoined', { "userName": uName });
        })
    }
     
    function userLeft(uName) {
        io.sockets.emit('userLeft', { "userName": uName });
    }
     
    function userNameAvailable(sId, uName) {
      setTimeout(function() {
        console.log('Sending welcome msg to ' + uName + ' at ' + sId);
     
        io.sockets.sockets[sId].emit('welcome', { "userName" : uName, "currentUsers": JSON.stringify(Object.keys(clients)) });
      }, 500);
    }
     
    function userNameAlreadyInUse(sId, uName) {
      setTimeout(function() {
        io.sockets.sockets[sId].emit('error', { "userNameInUse" : true });
      }, 500);
    }
    merci pour l'aide

  2. #2
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    L'erreur vient a priori de chat.main...

  3. #3
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2011
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 342
    Points : 124
    Points
    124
    Par défaut
    Hi John Blobsmith lorsque je comente cette ligne,j'ai toujours la même erreur
    voici chat.js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    exports.main = function(req, res){
      res.render('chat', { "title" : "Chat Sample" });
    };
    user.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /*
     * GET users listing.
     */
    exports.list = function(req, res){
      res.send("respond with a resource");
    };
    merci encore une fois

  4. #4
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Que ce passe-t-il quand tu appelle http://localhost:3000 ?

    Pourquoi t'a mis un setTimeout dans les fonctions userNameAvailable et userNameAlreadyInUse ?

Discussions similaires

  1. Travailler avec nodejs/symfony2 dans la même application
    Par hamzawhy dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 09/04/2015, 16h26
  2. Réaliser un Chat avec support IP
    Par Sub0 dans le forum Développement
    Réponses: 12
    Dernier message: 14/07/2006, 10h59
  3. chat avec JSP:architecture de l'application
    Par rvfranck dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 01/07/2006, 04h54
  4. Réponses: 0
    Dernier message: 17/10/2005, 08h05
  5. Réponses: 16
    Dernier message: 12/11/2004, 00h05

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