搭建简单的nodejs http服务器详解
发布时间 - 2026-01-11 00:05:39 点击率:次搭建简单的nodejs服务器

通过一些简单配置我们就可以搭建一台基于nodejs的http服务器
通过switch配置url路由的方法
// 这是一个简单的Node HTTP服务器,能处理当前目录的文件
// 并能实现两种特殊的URL用于测试
// 用HTTP://localhost:8000或http://127.0.0.1:8000连接这个服务器
// 首先加载所有需要用到的模块
var http = require('http'); // 加载http服务api模块
var fs = require('fs'); // 加载fs文件服务api模块
var server = new http.Server(); // 创建新的HTTP服务器
var urlapi = require('url'); // 创建url路由api模块
server.listen(8000); // 监听端口8000
// 使用on方法注册事件处理,该事件一直被监听,任何的请求都会进入回调函数,执行相应的操作
server.on('request', function(request, response) { // 当有request请求的时候触发处理函数
// 解析请求的URL
var url = urlapi.parse(request.url);
//监听请求的网站,以当前脚本目录为根目录的url地址
console.log(url.pathname);
// 特殊URL会让服务器在发送响应前先等待
switch(url.pathname) { //判断请求的路径信息
case ''||'/' : // 处理请求的网站根目录,指定加载对应的文件夹,一般以根目录的index.html为默认,nodejs是高效流处理的方案,也可以通过配置文件来配置
fs.readFile("./page/index.html", function(err, content){ //打开请求的文件
if(err) { //输出错误信息,也可以自定义错误信息
response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
response.write(err.message);
response.end();
} else { //请求成功返回数据
response.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' }); //告诉相应头文件,返回数据的类型
response.write(content); //返回的内容,有时候还会加上buter数据类型
response.end(); //结束响应,不写的话,会一直处于响应状态,页面不会显示内容
}
});
break;
case '/test/delay':// 此处用于模拟缓慢的网络连接
// 使用查询字符串来获取延迟时长,或者2000毫秒
var delay = parseInt(url.query) || 2000;
// 设置响应状态和头
response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
// 立即开始编写响应主体
response.write('Sleeping for' + delay + ' milliseconds...');
// 在之后调用的另一个函数中完成响应
setTimeout(function(){
response.write('done.');
response.end();
}, delay);
break;
case '/test/mirror':// 如果请求是test/mirror,则原文返回它
// 响应状态和头
response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
// 用请求的内容开始编写响应主体
response.write(request.mothod + ' ' + request.url + ' HTTP/' + request.httpVersion + '\r\n');
// 所有的请求头
for (var h in request.headers) {
response.write(h + ':' + request.headers[h] + '\r\n');
}
response.write('\r\n');// 使用额外的空白行来结束头
// 在这些事件处理程序函数中完成响应
// 当请求主体的数据块完成时,把其写入响应中
request.on('data', function(chunk) { response.write(chunk); });
// 当请求结束时,响应也完成
request.on('end', function(chunk){ response.end(); });
break;
case '/json' : // 模拟JSON数据返回
// 响应状态和头
response.writeHead(200, {'Content-type':'application/json; charset=UTF-8'});
response.write(JSON.stringify({test:'success'}));
response.end();
break;
default:// 处理来自本地目录的文件,主要是一些静态资源文件,搭建静态服务器还有其他的方法
var filename = url.pathname.substring(1); // 去掉前导'/'
var type = getType(filename.substring(filename.lastIndexOf('.')+1));
console.log(filename); //取得文件类型 css js ....
// 异步读取文件,并将内容作为单独的数据模块传给回调函数
// 对于确实很大的文件,使用流API fs.createReadStream()更好
fs.readFile(filename, function(err, content){
if(err) {
response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
response.write(err.message);
response.end();
} else {
response.writeHead(200, { 'Content-Type' : type });
response.write(content);
response.end();
}
});
break;
}
});
//这里定义了一个用来判断文件类型的函数
function getType(endTag){
var type=null;
switch(endTag){
case 'html' :
type = 'text/html; charset=UTF-8';
break;
case 'htm' :
type = 'text/html; charset=UTF-8';
break;
case 'js' :
type = 'application/javascript; charset="UTF-8"';
break;
case 'css' :
type = 'text/css; charset="UTF-8"';
break;
case 'txt' :
type = 'text/plain; charset="UTF-8"';
break;
case 'manifest' :
type = 'text/cache-manifest; charset="UTF-8"';
break;
default :
type = 'application/octet-stream';
break;
}
return type;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# nodejs搭建服务器
# 用nodejs搭建服务器
# nodejs搭建http服务器
# 基于Node.js的http模块搭建HTTP服务器
# NodeJS搭建HTTP服务器的实现步骤
# 利用node.js本地搭建HTTP服务器
# nodejs搭建本地http服务器教程
# 从零学习node.js之搭建http服务器(二)
# 使用nodejs搭建一个简易HTTP服务的实现示例
# 加载
# 错误信息
# 回调
# 还会
# 两种
# 其他的
# 一台
# 这是一个
# 可以通过
# 并将
# 会让
# 自定义
# 在这些
# 并能
# 结束时
# 配置文件
# 时长
# 前先
# 大家多多
# 就可以
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用PHP快速搭建CMS系统?
Laravel如何使用Vite进行前端资源打包?(配置示例)
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
千库网官网入口推荐 千库网设计创意平台入口
如何在搬瓦工VPS快速搭建网站?
网站制作软件有哪些,制图软件有哪些?
动图在线制作网站有哪些,滑动动图图集怎么做?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
如何用免费手机建站系统零基础打造专业网站?
香港服务器租用费用高吗?如何避免常见误区?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何获取上海专业网站定制建站电话?
如何快速搭建高效可靠的建站解决方案?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
香港服务器如何优化才能显著提升网站加载速度?
Linux系统命令中screen命令详解
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
JS碰撞运动实现方法详解
如何在IIS中新建站点并配置端口与IP地址?
如何在云指建站中生成FTP站点?
LinuxCD持续部署教程_自动发布与回滚机制
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何快速建站并高效导出源代码?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
北京专业网站制作设计师招聘,北京白云观官方网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
javascript读取文本节点方法小结
phpredis提高消息队列的实时性方法(推荐)
WordPress 子目录安装中正确处理脚本路径的完整指南
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
如何快速辨别茅台真假?关键步骤解析
java ZXing生成二维码及条码实例分享
南京网站制作费用,南京远驱官方网站?
Laravel如何使用Telescope进行调试?(安装和使用教程)
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
上一篇:swoole到底能干什么
上一篇:swoole到底能干什么

