NodeJS学习之如何编写简单的服务器
作者:m18514657855 发布时间:[ 2017/3/30 10:28:38 ] 推荐标签:测试开发技术 JAVA
之前一次博客已经简单介绍了nodejs的一些基本知识,认识了nodejs的一些原理,但是nodejs毕竟是用来搭建响应速度快、易于扩展的网络应用的,我们学习的目标是可以用它搭建一些网络应用,所以经过一段时间的学习实践,我获得了一些用nodejs搭建简单服务器的心得,简单介绍下。
首先,如果我们需要用nodejs搭建一些简单的服务器,只利用nodejs原本拥有的模块,我们需要关注的是http模块。所以在实际的编写代码中,我们首先需要添加引用http模块,如下:
consthttp=require('http');
接下来,我们可以利用http模块中的creatServer(function(req,res){})方法快速的编写一个http服务器,如下:
vartestserver=http.createServer(function(req,res){
});
可以看到,这个方法的参数是一个function,而这个function的参数req是服务器接收的请求,而res则是服务器的返回(这里方便理解直接写成res和req),这样你获得了一个http.server的实例testserver。
然后,你可以使用listen这个方法来让这个testserver服务器监听某个端口,如下:
testserver.listen(8080,function(){
console.log("listenstrart8080new
");
});
那么,这个testserver监听了8080这个端口(可以自行设置相应没被占用的端口),该listen方法第二个参数是一个回调函数,当服务器监听了某个端口后,会调用这个函数,在这里我简单的输出了
"listenstrart8080new
",
我们会发现这种回调的样式在nodejs里会有很多,之前也讲过,nodejs的特点是异步非阻塞嘛。
现在还有一个问题,我们的testserver服务器虽然监听了某个端口,但是并不会对收到的请求做任何处理,也不会有任何返回操作。所以我们需要添加相应的操作,如下:
vartestserver=http.createServer(function(req,res){
res.writeHeader(200,{'Content-Type':'text/html'});
res.end();
});
这个是简单的编写了一个200的返回。
相对复杂的,我们可以做如下变化:
constfs=require('fs');
vartestserver=http.createServer(function(req,res){
if(req.method=="GET"){
console.log("reload");
varhtml=fs.readFileSync('/test/index.html');
res.writeHeader(200,{"Content-Type":"text/html"});
res.write(html);
res.end();
}
});
在这里我们又添加了fs模块,这个模块在nodejs中负责文件的操作。在这次操作中,我们首先判断了本次请求的类型为"GET",接着便读取了本地的一个index.html文件,并将之写进返回的res里,这样发送请求的客户端会看到这个html页面。注意这里的读取html文件的函数fs.readFileSync('/test/index.html')是同步的(nodejs中添加了Sync的方法一般都是同步的),也是只有确实的读完了这个文件,接下来的操作才会执行。
当然有时候我们也需要对客户端发来的数据内容进行处理,所以我们也可以做如下操作:
vartestserver=http.createServer(function(req,res){
req.on('data',function(data){
console.log(data);
});
req.on('error',function(err)){
console.log(err);
});
});
这里我们可以利用req.on方法来处理收到的请求内容,比如收到了一定的data或者说某个请求有问题(error)。
需要注意,nodejs的特点是异步非阻塞,所以在编写代码时我们发现,在服务器这里收到请求时不需要我们自己去新建一个线程去处理,但是依旧可以同时处理多个请求,那是因为nodejs内部已经实现了这一套内容,所以写起来相当方便。
当然,以上的内容只是简单的介绍了如何利用nodejs快速新建一个http服务器,具体的方法还有很多,变化也很多,可以通过阅读nodejs的文档来学习,而且nodejs是开源的,阅读源码也会有很大帮助,这是我近期学习nodejs的一些心得。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11