脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-node.js第十课(HTTP服务器),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 
概念:Node.js提供了http模块。其中封装了一个高效的HTTP服务器和一个简单的HTTP客户端。
http.server是一个基于事件的HTTP服务器。内部用C++实现。接口由JavaScript封装。
http.request则是一个HTTP客户端工具。用户向服务器发送请求。
一、HTTP服务器
http.Server实现的,它提供了一套封装级别很低的API,仅仅是流控制和简单的解析,所有的高层功能都需要通过它的接口
前面讲解的app.js案例
代码分析:
http.createServer创建了一个http.Server的实例,将一个函数作为HTTP请求处理函数。这个函数接受两个参数,请求对象req和响应对象的res。
res显式写入了响应代码200(表示请求成功),指定响应头,写入响应体。调用end结束并发送。该实例调用listen函数,启动服务器并监听3000端口。
1.http.Server的事件
http.Server是一个基于事件的HTTP服务器,所有请求都被封装到独立的事件,开发者只要对它的事件编写相应的函数即可实现HTTP服务器的所有功能,
它继承与EventEmITter,提供了以下事件:
request:当客户端请求到来时,该事件被触发,提供两个参数req和res,分别是http.ServerRequest和http.ServerResponse的实例,表示请求和响应信息。
connection:当TCP连接建立时,该事件被触发,提供一个参数socket,为net.Socket的实例(底层协议对象)。
close:当服务器关闭时,该事件被触发。
除此之外还有checkContinue、upgrade、clientError事件。
最常用和关心的是:request事件,http提供了一个捷径,http.createServer([requestListener])
显式实现方法:
案例:server.js
VAR http = require('http');
var server = new http.Server();
server.on('request',function(req,res){
res.writeHead(200,{'Content-tyPE':'text/htML'});
res.write('
hello,world
'); http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/plain'});
res.end(util.inspect(urls.parse(req.url,true)));
}).listen(3000);
4.获取POST请求内容
POST请求的内容全部都在请求体中,http.ServerRequest并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。譬如上传文件。
恶意的POST请求会大大消耗服务器的资源。所以Nodejs是不会解析请求体,当你需要的时候,需要手动来做。
实例:post.js
var http=require('http');
var querystring=require('querystring');
var util=require('util');
http.createServer(function(req,res){
var post='';
//注册data事件监听函数,每当接受请求体的数据
req.on('data',function(chunk){
post+=chunk;
});
req.on('end',function(){
//解析成字符串格式的post为真正的post请求格式
post=querystring.parse(post);
//向前端返回
res.end(util.inspect(post));
});
}).listen(3000);
5.http.ServerResponse返回给客户端的信息
决定了用户最终能到的结果,它是由http.Server的reponse对象发送的,作为第二个参数传递。一般为response或res
主要的三个函数:
response.writeHead(statusCode,[headers]):向请求的客户端发送响应头。
statusCode是HTTP的状态码,如200为成功,404未找到等。
headers是一个类似关联数组的对象,表示响应头的每个属性。
response.write(data,[encoding]) 向请求客户端发送相应内容,data是buffer或字符串,encoding为编码
response.end([data],[encoding]) 结束响应,告知用户所有发送已经完成,当所有要返回的内容发送完毕,该函数必须被调用一次,如果不调用,客户端永远处于等待状态
觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!
以上是脚本宝典为你收集整理的javascript代码实例教程-node.js第十课(HTTP服务器)全部内容,希望文章能够帮你解决javascript代码实例教程-node.js第十课(HTTP服务器)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。