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了