NodeJS学习之如何编写简单的服务器

Oralie ·
更新时间:2024-09-21
· 864 次阅读

  之前一次博客已经简单介绍了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的一些心得。



服务器 nodejs学习

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章