使用nodejs搭建一个简单服务器 您所在的位置:网站首页 Nodejs搭建一个简单的服务器 使用nodejs搭建一个简单服务器

使用nodejs搭建一个简单服务器

2024-06-02 17:24| 来源: 网络整理| 查看: 265

1. nodejs 服务器搭建

nodejs 写一个服务器,别人能够访问到;

http 协议:浏览器 和 服务器 遵守的规范;

http 服务器 和 浏览器 之间的通信,都是通过 http 实现的

我们的服务器,最重要的一环,监听,也就是说,http 向服务器发送请求,那么服务器就应该接收到这样的请求,这就是监听;

第一步: 我们创建server.js文件如下: // 1. 导入http模块 const http = require("http"); // 2. 创建一个web服务器对象 const server = http.createServer(); // 3. 监听请求事件 server.on("request", (req, res) => { //req-->request 请求对象, res-->response 响应对象 // 通过响应头设置返回前台数据格式及编码。(解决中文乱码的问题) res.setHeader('Content-Type', 'text/html;charset=utf-8'); //res.write()表示向客户端输出的方法 res.write("hello world,你好nodejs") //res.end()每次响应完,需要调用此方法 来结束响束 res.end(); }) // 4. 监听端口,为了避免端口冲突,这里给一个本机端口3000 server.listen(3000, () => { console.log("服务器启动成功"); }) 

第二步:启动服务器 以上就是初步创建的服务器文件,接下来让我们在server.js所在的目录下打开dos终端窗口,执行如下指令:

node server.js

第三步:访问服务器 打开任意浏览器,地址栏中输入 http://127.0.0.1:3000或者http://localhost:3000 便可访问服务器。

2. 服务器业务函数参数分析: req:

req参数指得是request 请求对象,凡是浏览器发送请求相关的信息,都可以从该对象中找到。例如:

req.url 用户请求的路径req.headers请求头 { //请求报头域主要用于指定被请求资源的Internet主机和端口号 host: 'localhost:3000', //Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接 //例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。 connection: 'keep-alive', // 这个是非常重要的规则。 这个用来指定Response-Request遵循的缓存机制。各个指令含义如下 //Cache-Control:Public 可以被任何缓存所缓存() //Cache-Control:Private 内容只缓存到私有缓存中 //Cache-Control:no-cache 所有内容都不会被缓存 'cache-control': 'max-age=0', 'upgrade-insecure-requests': '1', //告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', // 浏览器端可以接受的媒体类型,通配符 * 代表任意类型例如 Accept: */* 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个) accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', //浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码); 'accept-encoding': 'gzip, deflate, br', //浏览器申明自己接收的语言 'accept-language': 'zh-CN,zh;q=0.9' }

​ 3.req.method:请求类型 如:get 、post 等

​ 4.req.httpVersion:http协议版本 ,目前我们使用的是HTTP/1.1 版本

res res是相应对象,凡是服务器想要给前端浏览器的数据和信息。都需要res去完成。res.setHeader() //设置响应头 ,例如 res.setHeader(‘Content-Type’, ‘text/html;charset=utf-8’);res.wtire() // 向浏览器输出res.end() // 向浏览器 响应结束res.statusCode // 设置响应状态码res.statusMessage //设置响应 状态信息res.writeHead() // 综合写法: 状态码,信息,响应头,如下 res.writeHead(404, 'Not Found', { 'Content-Type': 'text/plain;charset=utf8' }) 3. 服务器的扩展 //加载http模块 var http=require('http'); // 加载fs模块 文件的读取,写入。。。 var fs=require('fs') //创建服务器对象 //每当有人 访问了app,function就会执行一次。 var app=http.createServer(function(req,res){ //req 请求对象 //req.url 表示用户的请求路径。 // 请求路径1: 127.0.0.1:3000/ 我们自己发送的 // 请求路径2: 127.0.0.1:3000/favicon.ico 浏览器的请求。(请求图标) if(req.url=='/'){ fs.readFile('./index.html',function(err,data){ //data -buffer类型数据 (底层二进制数据) if(!err){ // console.log(data.toString()); res.write(data); res.end(); } }); }else if(req.url=='/favicon.ico'){ fs.readFile('./logo.png',function(err,data){ if(!err){ res.write(data); res.end(); } }) } }) //监听端口 // 参数一:指定服务器运行的端口号 , 端口号有取值范围 0-65535, 0-1024系统保留端口 // 参数二:指定服务器运行的域名(ip)。本地域名:localhost, 本地ip 127.0.0.1 // 参数三:回调函数。 当node server app.listen(3000,'127.0.0.1',function(err){ //err 错误对象, 默认值:null, // 只有app.listen 出现错误, err={err:'xxxx'} if(err){ throw err; }else{ console.log('服务器运行在127.0.0.1:3000上') } }) 静态资源服务器 1. 首先目录要安装如下结构创建 js img css server.js index.html 2. server.js代码如下: //定义服务器的文件 var http=require('http'); var fs=require('fs'); var app=http.createServer(function(req,res){ console.log(req.url) if(req.url=='/'){ fs.readFile('./index.html',function(err,data){ if(!err){ res.end(data); } }) }else if(req.url=='/favicon.ico'){ fs.readFile('./img/logo.png',function(err,data){ if(!err){ res.end(data); } }) }else{ // req.url== /css/a.css, /img/3zhe.jpg, /img/4zhe.jpng fs.readFile('.'+req.url,function(err,data){ if(!err){ res.end(data); } }) } }) app.listen(4000,'localhost',function(err){ if(!err){ console.log('您的服务器成功运行在localhost:4000上') } }) /* 1. 用户访问 localhost:4000/ -----> 返回 index.html 2. 浏览器自动访问 localhost:4000/favicon.ico -----> 返回 ./img/logo.png 3. 页面中会引入 css, localhost:4000/css/a.css -----> 返回 ./css/a.css 4. 我们页面,不只要引入一个css,或一个js,或一个img, 我们要引入的事多个 css,js,img,总不能一个一个去判断,req.url 然后做出响应。 -------》 封装一个 能返回静态资源的通用服务器。 1. 归类所有请求可以分为 几类。 / , /favicon.ico /css/a.css /img/3zhe.jpg /js/a.js 3. 初步分析,可以分为3类 : 第一类: / 第二类: /favicon.ico 第三类: /css/..., /js/... , /img/... */


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有