node 请求内网_Nodejs轻松搭建局域网服务器
node 请求内网_Nodejs轻松搭建局域网服务器
Nodejs轻松搭建局域网服务器
一、前言
前端开发经常会遇到移动端调试或者其它设备测试的场景,部署到云服务器上实在是太麻烦,如果可以在局域网直接调试就方便多了,Nodejs较为接近前端,选它来搭建局域网服务器便于上手。
二、代码实现
因为只是要测试前端部分,所以实现的功能是静态文件服务器即可。参考了一下这篇文章,试着写了一个简单的静态文件服务器,实现了基本的路由、静态文件读取、MIME类型支持的功能,直接贴代码:
首先是主程序app.js
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var mime = require('./mime');
//服务器端口号
var port = 8888;
//服务器路径
var root = './your-path';
//默认访问根目录下的"index.html"
var index = 'index.html';
http.createServer(function (request, response) {
var realPath = url.parse(request.url).pathname;
//默认访问根目录下的index.html
if (realPath.charAt(realPath.length - 1) == "/") {
realPath += index;
}
//安全问题,禁止父路径
realPath = realPath.replace(/\.\./g, '');
var realPath = root + realPath;
//获取文件的后缀名,为待会的MIME类型提供支持
var ext = path.extname(realPath);
ext = ext ? ext.slice(1) : 'unknown';
//先判断访问文件是否存在,并返回对应的HTTP状态码,再读取静态文件
fs.exists(realPath, function (exists) {
console.log('path.exists--%s', 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 {
//MIME类型支持
var contentType = mime[ext] || "text/plain";
response.writeHead(200, {
'Content-Type': contentType
});
response.write(file, "binary");
response.end();
}
});
}
});
}).listen(port);
// 终端打印运行信息
console.log('Server running at port:' + port);
然后是支持MIME类型mime.js
var mime = {
"html": "text/html",
"ico": "image/x-icon",
"css": "text/css",
"gif": "image/gif",
"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"
};
module.exports = mime;
至此代码完成,这个静态文件服务器已经能够支持一些常用访问请求了。
运行程序
为了让别的设备能在局域网内访问你的服务器,我们首先要知道你的本机IP。
CMD下输入“ipconfig”,找到“无线局域网适配器 Wi-Fi”:
这里可以看到路由器给你分配的局域网ip地址为 192.168.1.109,确保你要测试的其它设备与服务器在同一局域网后,在浏览器上输入此IP地址加上在app.js 里面设置的端口号就可以访问了(本例为“192.168.1.109:8888”)。
自此局域网服务器搭建完成。
转载请注明出处,欢迎分享