2011-08-03 23 views
0
var http = require('http') 
, io = require('socket.io') 
, fs = require('fs') 
, url = require('url') 
, server; 

server = http.createServer(function(request, response) { 
    var pathname = url.parse(request.url).pathname; 

    console.log("Request for: " + request.method + ' ' + pathname); 
    switch(request.method + ' ' + pathname) { 
    case 'POST /notify': 
     var data = ""; 
     request.addListener('data', function(chunk) { 
     data += chunk; 
     console.log(data); 
     }); 
     console.log(data); 
     response.end(); 
     break; 
    default: 
     response.writeHead(404); 
     response.end(); 
     break; 
    }; 
}); 

server.listen(3526); 

var io = io.listen(server); 

io.sockets.on('connection', function (socket) { 
    socket.emit('notifications', { demo: 'test' }); 
}); 

これはおそらく愚かな質問ですが、どうして私のデータにアクセスできないのですか?request.AddListenerブロックの外に変数がありますか?私のvarにアクセスできないのはなぜですか?

解決策を提示してください。

答えて

3

ノードは実行を継続し、2つ目のconsole.logに到達するとデータは入力されません。私はそれがよりよく動作するように最後のためのリスナーを追加しました

server = http.createServer(function(request, response) { 
     var pathname = url.parse(request.url).pathname; 
     var data = ""; 
     console.log("Request for: " + request.method + ' ' + pathname); 
     switch(request.method + ' ' + pathname) { 
     case 'POST /notify':  
      request.addListener('data', function(chunk) { 
      data += chunk; 
      console.log('data1: '+data); 
      });    
      break; 
     default: 
      response.writeHead(404); 
      response.end(); 
      break; 
     }; 
     request.addListener('end',function(){ 
     console.log('data2: '+data); 
     response.end(data); 
     });   
    }); 
関連する問題