node.js http server和client

server.jshtml

/*
var http = require("http");
var url = require("url");
var util = require("util");

http.createServer(function(req, res){
    res.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
    //res.end(util.inspect(url.parse(req.url, true)));

    //解析 url 參數
    var params = url.parse(req.url, true).query;
    res.write("網站名:" + params.name);
    res.write("\n");
    res.write("網站 URL: " + params.url);
    res.end();
}).listen(3000);*/

/*
var http = require("http");
var querystring = require("querystring");

http.createServer(function(req, res){
   //定義了一個post變量,用於暫存請求體的信息
   var post = "";
   //經過req的data事件監聽函數,每當接收到請求體的數據,就累加到post變量中
    req.on("data", function(chunk){
        post += chunk;
    });
    //在end事件觸發後,經過querystring.parse將post解析爲真正的POST請求格式,而後向客戶端返回
    req.on("end", function(){
        post = querystring.parse(post);
        res.end(util.inspect(post));
    });
}).listen(3000);*/
/*

var http = require("http");
var querystring = require("querystring");

var postHTML = '<html><head><meta charset="utf-8"><title>菜鳥教程 Node.js 實例</title> </head>'
    + '<body>' +
    '<form method="post">' +
    '網站名:<input name="name"><br> ' +
    '網站 URL: <input name="url">' +
    '<input type="submit">' +
    '</form> ' +
    '</body>'
'</body></html>';

http.createServer(function (req, res) {
    var body = "";
    req.on("data", function(chunk){
        body += chunk;
    });
    req.on("end", function () {
        //解析參數
        body = querystring.parse(body);
        //設置響應頭部信息及編碼
        res.writeHead(200, {"Content-Type":"text/html; charset=utf8"});
        //輸出提交的數據
        if(body.name && body.url){
            res.write("網站名:" + body.name);
            res.write("<br>");
            res.write("網站 URL: " + body.url);
        }else{
            //輸出表單
            res.write(postHTML);
        }
        res.end();
    })
}).listen(3000);

*/


var http = require("http");
var fs = require("fs");
var url = require("url");

//建立服務器
http.createServer(function(request, response){
    //解析請求,包括文件名
    var pathname = url.parse(request.url).pathname;
    //輸出請求的文件名
    console.log("Request for " + pathname + " received.");
    //從文件系統中讀取請求的文件內容
    fs.readFile(pathname.substr(1), function (err, data) {
        if(err){
            console.log(err);
            //HTTP 狀態碼:404:NOT FOUND
            //Content Type: text/plain
            response.writeHead(404, {"Content-Type": "text/html"});
        }else{
            //HTTP 狀態碼: 300 : OK
            //Content Type: text/plain
            response.writeHead(200, {"Content-Type":"text/html"});
            //響應文件內容
            response.write(data.toString());
        }
        //發送響應數據
        response.end();

    });
}).listen(8081);

//控制檯會輸出如下信息
console.log("Server running at http://localhost:8081");

client.js服務器

var http = require("http");
//用於請求的選項
var options={
    host : "localhost",
    port : "8081",
    path : "/index.html"
};

// 處理響應的回調函數
var callback = function(response){
    //不斷更新數據
    var body  = "";
    response.on("data", function(data){
        body += data;
    });
    response.on("end", function () {
        //數據接收完成
        console.log(body);
    });
}

//向服務端發送請求
var req = http.request(options, callback);
req.end();
相關文章
相關標籤/搜索