關於別的電腦訪問node.js建的服務器

1、你得首先安裝node.js,官網地址https://nodejs.org/下載node.exe執行文件,傻瓜式按裝

2、按裝完後,在node的安裝位置


3、紅色地方建三個文件,test.js,mine.js,Tools.js

打開test.js 並把下面這段代碼複製進去

var PORT = 8888;

var http = require('http');
var url=require('url');
var fs=require('fs');
var mine=require('./mine').types;
var path=require('path');
var Tools=require('./Tools');
//var tools = new Tools();

var server = http.createServer(function (request, response) {
    var pathname = url.parse(request.url).pathname;
    var guessPage = Tools.guessPage(fs, path, path.dirname(process.execPath), pathname);
    var realPath = guessPage.realPath;
    var ext = guessPage.ext;
        
    fs.exists(realPath, function (exists) {
        if (!exists) {
            response.writeHead(404, {
                'Content-Type': 'text/plain'
            });

            response.write("This request URL " + realPath + " was not found on this server.");
            response.end();
        } else {
            fs.readFile(realPath, "binary", function (err, file) {
                if (err) {
                    response.writeHead(500, {
                        'Content-Type': 'text/plain'
                    });
                    response.end(err);
                } else {
                    var contentType = mine[ext] || "text/plain";
                    console.log("contentType: " + contentType);
                    response.writeHead(200, {
                        'Content-Type': contentType
                    });
                    response.write(file, "binary");
                    response.end();
                }
            });
        }
    });
});
server.listen(PORT);
console.log("Server runing at port: " + PORT + ".");



打開 mine.js並把下面這段代碼複製進去

exports.types = {
  "css": "text/css",
  "gif": "image/gif",
  "htm": "text/html",
  "html": "text/html",
  "ico": "image/x-icon",
  "jpeg": "image/jpeg",
  "jpg": "image/jpeg",
  "js": "text/javascript",
  "json": "application/json",
  "pdf": "application/pdf",
  "png": "image/png",
  "svg": "image/svg+xml",
  "swf": "application/x-shockwave-flash",
  "tiff": "image/tiff",
  "txt": "text/plain",
  "wav": "audio/x-wav",
  "wma": "audio/x-ms-wma",
  "wmv": "video/x-ms-wmv",
  "xml": "text/xml"
};

打開 Tools.js並把下面這段代碼複製進去

// if export Object, use constructor define
//function Tools() {};
// export Object
//module.exports = Tools;

/**
 * 補充請求頁面,自動添加index.html/index.htm
 */
//Tools.guessPage
exports.guessPage = function(fs, path, curDir, pathname) {
    console.log("pathname: " + pathname);
    if (!pathname) {
        pathname = pathname+"/";
    }
    var realPath = path.join(curDir, pathname);
    console.log("realPath: " + realPath);
    var ext = path.extname(realPath);
    console.log("before ext: " + ext);
    if (!ext) {
        // guess index.html, is not exist, then index.htm.
        var tmpPath = realPath + "index.htm";
        console.log("tmpPath: " + tmpPath);
        // fs.existsSync will be deprecated.
        // var exists = fs.existsSync(tmpPath);
        var exists = true;
        try {
            fs.openSync(tmpPath, "r");
        } catch (e) {
            console.log("e: " + e);
            exists = false;
        }
        console.log("exists: " + exists);
        if (exists) {
            ext = "htm";
        } else {
            tmpPath = realPath + "index.html";
            ext = "html";
        }
        realPath = tmpPath;
    } else {
        ext = ext.slice(1);
    }
    console.log("ext: "+ext);
    var result = new Object();
    result.realPath = realPath;
    result.ext = ext;
    return result;
}

4、沒寫完,有空繼續寫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章