Node.js中有個http的module可以建立http server,使用上也非常的容易
例如:
var server;
var ip = "127.0.0.1";
var port = 1234;
var http = require("http");
//設定http server,req參數是代表client傳來的要求,res代表server端的動作
server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
//取得路徑,依照路徑不同回覆client不同的資料
var path = req.url;
switch(path){
case "/index":
res.end("index");
break;
case "/test":
res.end("test");
break;
default:
res.end('Hello World\n');
}
//當透過瀏覽器連接時,path除了顯示瀏覽器連的路徑外,還會顯示/favicon.ico(瀏覽器讀取icon的關係)
console.log(path);
});
//啟動http server,監聽http行為
server.listen(port, ip);
console.log("Server running at http://" + ip + ":" + port);
執行上述這段程式後,利用瀏覽器就可以連到Node.js產生出來的http server
既然說是http server,讀檔也是必要的,需配合fs module來讀檔
var server;
var ip = "127.0.0.1";
var port = 1234;
var http = require("http");
var fs = require("fs");
var encode = "utf8";
var dir_path = "view"; //放網頁檔案的目錄
//設定http server
server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
//取得路徑
var file_path = dir_path + req.url;
fs.readFile(file_path, encode, function(error, data){
//當fs讀不到檔案或發生錯誤時,error會是true
if(error){
res.writeHead(404, {'Content-Type': 'text/html'});
res.end("404 not found");
return 0;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
});
//啟動http server,監聽http行為
server.listen(port, ip);
console.log("Server running at http://" + ip + ":" + port);
另外補充一下
res.write()跟res.end()不同的地方在於,res.write()可以不限次數使用,將資料回傳給client;而res.end()也可以將資料回傳給client,但傳完後就結束與client的connect了