2013-04-02 82 views
4

我是node.js的新手。嘗試讓請求結束時打印控制檯。我嘗試去localhost:8080和localhost:8080 /但沒有在終端打印。任何想法爲什麼?這樣做是因爲當我運行此示例時,因爲當我嘗試在http://tutorialzine.com/2012/08/nodejs-drawing-game/上運行演示時,終端說socket已啓動,但它不會呈現index.html頁面。所以我不明白爲什麼這個代碼服務於其他靜態文件的代碼不適合我。Node.js簡單服務器請求結束事件問題

var static = require('node-static'); 

// 
// Create a node-static server instance to serve the './public' folder 
// 
// var file = new(static.Server)('./'); 

require('http').createServer(function (request, response) { 
    request.addListener('end', function() { 
     console.log("ended"); 
    }); 
}).listen(8080); 
+0

注:該教程是爲快速2.X寫的,其中'app'是的'http.Server'一個實例。對於Express 3.x,'app'是一個'function',所以你不能簡單地'listen()'。查看[2.x至3.x遷移指南](https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x),特別是[Socket。 IO兼容性](https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x#socketio-compatibility)。 –

回答

0

你應該調用節點靜態服務請求處理程序中,這樣就可以得到index.html

var static = require('node-static'); 
var fileServer = new static.Server('./'); 

require('http').createServer(function (request, response) { 
    fileServer.serve(request, response); //add this line 
    request.addListener('end', function() { 
     console.log("ended"); 
    }); 
}).listen(8080); 
7

看來你是如何使用Node.js 0.10.x,並在新版本中你要恢復可讀流,使它們發出事件:

require('http').createServer(function (request, response) { 
    var body = ''; 
    request.setEncoding('utf8'); 
    request.on('readable', function() { 
     body+= this.read(); 
    } 
    request.on('end', function() { 
     console.log('ended'); 
     console.log('Body: ' + body); 
    }); 
    request.resume(); 
}).listen(8080); 
+2

這對我來說伎倆,我的系統升級到最新的node.js版本,突然我的node.js應用程序被borked。 :/ –

+0

@NickJennings,還有必要偵聽「可讀」事件來讀取數據,添加到答案中 – micnic