NodeJs的Http服务器的搭建

NodeJs启动Http服务

发送Http请求

使用Http服务,先进行使用require('http'); 进行使用:Http Api

在这里插入图片描述
在后面进行搭建server服务器,使用的是一个 createServer方法方法在api文档进行查看,以及使用这个方法之后会返回一个Server类。在同级api文档目录下,进行查看Server类所包含的方法。
在这里插入图片描述
其中Server类当中进行查看所对应的方法,方法还是比较多的。在里面listen方法用于启动HTTP服务器以侦听连接。此方法与server.listen()from相同net.Server。
在这里插入图片描述
在这个listen方法当中简介如下:简单来说,在方法当中给定一个端口号进行监听,第二个传递给一个回调函数。
在这里插入图片描述
而使用代码实现服务端启动:

var http = require('http');

var server = http.createServer();

server.listen(8080, function() {
	console.log("localhost:8080")
});

运行这个文件,会发现该端口正在运行,不会再一次弹出文件目录,或者在浏览器当中直接访问8080端口,会发现浏览器上方一直在转圈,到这里,请求就已经成功发送了。

在这里插入图片描述
在这里,我们还可以进行查看response的end方法 我们可以发现,在end方法进行调用的时候,end方法当中所带的字符串等也同样可以和write一样进行写入到浏览器当中。因此我们对于部分简单的文本写入可以省略write方法。
在这里插入图片描述

接收Http请求

接收对server类使用一个on进行绑定上一个事件,绑定的参数包括一个request和一个回调函数。回调函数当中也包含两个参数一个request和response,接收和响应数据。在回调函数之间可以把request打印出来进行查看,并且response的write方法进行写入数据到浏览器当中,使用end方法进行结束,代码如下:

var http = require('http');

var server = http.createServer();

server.on('request',function(res,resp){
	console.log(res.method);
	resp.write("hello changsha");
	resp.end();
});

server.listen(8080, function() {
	console.log("localhost:8080")
});

之后运行这个js文件,在浏览器当中查看8080端口,可以看到write方法的参数已经被写入到网页当中了。
在这里插入图片描述

编码格式(中文乱码)

在这里,同样的,我们再使用response.write进行写入内容,这一次写入中文,会发现在浏览器当中出现了乱码。这是因为在response进行响应的时候没有设置编码格式。
在这里插入图片描述
因此我们在代码当中加上一条设置编码格式的代码即可。

	resp.setHeader('Content-type', 'text/plain;charset=utf-8')

反之使用不同的编码格式会对不同文本进行不同的解析,如使用以下代码会把html代码块进行解析。

	resp.setHeader('Content-type', 'text/html;charset=utf-8')
返回网页信息

在这里http搭建好了之后,我们进行响应返回不能是怎么简单一个文本,而应该返回一个html大的页面,在这里我们实现的思路是,先使用filesystem模块进行读取html文件内容再进行返回给response进行响应即可。代码实现如下:

var http = require('http');
var fs = require('fs')
var server = http.createServer();

server.on('request', function(res, resp) {
	console.log(res.method);
	resp.setHeader('Content-type', 'text/html;charset=utf-8')
	
	fs.readFile('./http2.html', 'utf8', (err,data) => {
		resp.end(data);
	})
});

server.listen(8080, function() {
	console.log("localhost:8080")
});

运行项目,在浏览器当中查看8080这个端口,看http2.html这个网页文件是否被响应出来。
在这里插入图片描述

图片的响应

对于图片的响应,在这里由于路径不一致,进行显示是无法响应的,在这里的request的url属性可以看到请求的路径,在浏览器当中查看。路径不一样所以是无法做出响应的。
在这里插入图片描述
所以我们需要对不同路径下的不一样的请求做出不一样的响应。在读取图片文件的时候要注意urls这个的值和你本地图片的地址是否一致。不一致的话使用字符串进行拼接。而且图片本身就是二进制文件,所以不需要进行指定编码格式。代码如下所示

var http = require('http');
var fs = require('fs')
var server = http.createServer();

server.on('request', function(res, resp) {
	console.log(res.url);
	var urls = res.url;
	if (urls == '/') {
		resp.setHeader('Content-type','text/html;charset=utf-8')
		fs.readFile('./http2.html', 'utf8', (err, data) => {
			resp.end(data);
		})
	} else {
		fs.readFile('..' + urls, (err, data) => {
			//读取这个图片的路径
			resp.end(data);
		})
	}
});

server.listen(8080, function() {
	console.log("localhost:8080")
});

在node下运行这个js文件,查看端口可以看到这个html页面的图片就显示出来了

在这里插入图片描述

其他静态资源的响应

在这里以js文件进行测试,如在前面的html文件当中进行引入一个js文件,在这个js文件当中进行绑定一个单击事件,给一个id为btn的按钮绑定一个事件。

document.getElementById('btn').onclick = function(){
	alert("this is button")
}

再使用script标签把这个js文件进行引入到html页面当中。在这里注意一下项目的结构,
在这里插入图片描述
都是同一级的目录下,所以在前面进行判断是需要确定是不是/或者./这两个路径即可。修改前面的Http3.js文件。

var http = require('http');
var fs = require('fs')
var server = http.createServer();

server.on('request', function(res, resp) {
	console.log(res.url);
	var urls = res.url;
	if (urls == '/') {
		resp.setHeader('Content-type', 'text/html;charset=utf-8')
		fs.readFile('./http2.html', 'utf8', (err, data) => {
			resp.end(data);
		})
	} else { //在这里是对其他所有静态资源进行响应
		fs.readFile('.' + urls, (err, data) => {
			resp.end(data);
		})
	}
});

server.listen(8080, function() {
	console.log("localhost:8080")
});

在node下运行这个js文件,在浏览器当中进行查看,看这个导入的js文件是否起到了作用。可以看到会有一个alert弹出。其余的css等页面也是同理进行响应。
在这里插入图片描述

获取当前的目录下所有文件名

在这里使用的是文件系统当中的一个readdir方法,API文档,单击前往
在这里插入图片描述
使用代码实现:

var fs = require('fs')

fs.readdir('./', 'utf8', (err, data) => {
	console.log(data)
})

运行这个js查看输出,返回的是一个数组类型的值。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是基于 Node.js 的 WebSocket 服务器搭建步骤: 1. 首先,你需要安装 Node.js,可以在官网下载安装包进行安装。 2. 创建一个新的目录作为你的项目文件夹,在该目录下打开命令行工具,输入以下命令来初始化一个新的 Node.js 项目: ``` npm init ``` 3. 安装 `ws` 模块,这是一个流行的 WebSocket 库: ``` npm install ws --save ``` 4. 在你的项目文件夹中创建一个新的 JavaScript 文件,例如 `server.js`,并打开该文件。 5. 在 `server.js` 中导入 `ws` 模块,并创建一个 WebSocket 服务器的实例: ```javascript const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); ``` 这将创建一个 WebSocket 服务器实例,监听本地机器上的 8080 端口。 6. 添加事件监听器,以便在连接建立、断开或收到新消息时执行相应的操作。例如: ```javascript server.on('connection', function connection(ws) { console.log('Client connected'); ws.on('message', function incoming(data) { console.log(`Received message: ${data}`); }); ws.on('close', function close() { console.log('Client disconnected'); }); }); ``` 这会监听 WebSocket 服务器上的 `connection` 事件,并在客户端连接时输出一条消息。同时,它还会监听 `message` 和 `close` 事件,以便在客户端发送消息或断开连接时执行相应的操作。 7. 启动服务器。在命令行中运行以下命令: ``` node server.js ``` 这会启动 WebSocket 服务器。 现在,你已经成功地创建了一个基于 Node.js 的 WebSocket 服务器,可以通过 WebSocket 协议与客户端进行通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Modify_QmQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值