AJax技术

深入解析nodejs HTTP服务(2)

字号+ 作者:H5之家 来源:H5之家 2017-09-15 17:14 我要评论( )

ServerResponse对象的方法: writeContinue() 发送一个HTTP/1.1 100 Continue消息给客户端,请求被发送的正文内容 writeHead(statusCode,[reasonPhrase],[headers]) 把一个响应标头写入请求,例如response.writeHea

ServerResponse对象的方法:

  • writeContinue()  发送一个HTTP/1.1 100 Continue消息给客户端,请求被发送的正文内容
  • writeHead(statusCode,[reasonPhrase],[headers])    把一个响应标头写入请求,例如response.writeHead(200,'successs',{'Content-Length':body.length,'Content-Type':'text/plain'});
  • setTimeout(timeout,[callback])   设置客户端连接的套接字超时时间
  • setHeader(name,value)   设置一个特定的标头值
  • getHeader(name)   获取已在响应中设置的一个HTTP标头
  • removeHeader(name)    移除已在响应中设置的一个HTTP标头
  • write(chunk,[encoding])   写入chunk,Buffer或String对象到响应Writeable流,仅把数据写入响应的正文部分
  • addTrailers(headers)     将HTTP尾随标头写入响应的结束处
  • end([data],[encoding])   把可选的数据输出写入响应的正文,然后刷新Writeable流并响应该请求
  • (3)http.IncomingMessage对象

    HTTP服务器和客户端都创建IncomingMessage对象,该对象实现了Readable流,让你能够把客户端请求或服务器响应作为流院读入,这意味着它们的readable和data事件可以被监听并用来从流中读出数据。

    IncomingMessage对象中可用的事件、属性和方法

  • close   当底层套接字被关闭时发出
  • httpVersion   指定用于构建客户端请求/响应的HTTP版本
  • headers   包含了随请求/响应发送的标头的一个对象
  • method   指定用于请求/响应的方法
  • url   发送到服务器的URL字符串
  • statusCode   指定来自服务器的3位数状态码
  • socket   一个指向net.Socket对象的句柄,用来与客户端/服务器的通信
  • setTimeout(timeout,[callback])   设置连接的套接字超时时间
  • (4)HTTP Server对象

    HTTP Server对象提供了实现HTTP服务器的基本框架,它提供了一个监听端口的底层套接字和接收请求,然后发送响应给客户端连接的处理程序,当服务器正在监听时,node应用程序并没有结束。

    要启动HTTP服务器,首先需要createServer()方法创建一个Server对象:

    http.createServer([requestListener])

    此方法返回Server对象,requestListener参数是在请求事件被触发时执行的回调函数,此回调函数接收两个参数,一个是代表客户端请求的IncomingMessage对象,第二个参数是用来指定和发送响应的ServerResponse对象。

    创建了server对象,就可以在server对象上的listen()方法开始监听它:

    listen(port,[hostname],[backlog],[callback])

    一个基本的例子:

    var http=require('http'); http.createServer(function(req,res){ //handle resquest and response }).listen(8080);

    实现一个基本的静态文件服务

    //实现一个静态文件服务器 var fs=require('fs'); var http=require('http'); var url=require('url'); //创建一个服务器 http.createServer(function(req,res){ if(req.url!="/favicon.ico"){ var urlObj=url.parse(req.url,true,false); console.log(urlObj.pathname); fs.readFile('.'+urlObj.pathname+'.html',function(err,data){ if(err){ res.writeHead(404); res.end(JSON.stringify(err)); return; } console.log(data.toString()); //将文件的内容写入res响应对象 res.end(data); }); } }).listen(8080); //实现一个HTTP客户端,向服务器发送一个GET请求来检索文件内容 var options={ hostname:'127.0.0.1', port:'8080', path:'/aaa' }; //on('data')读取来自服务器的响应中的内容,on('end')把文件内容记录到到一个文件 function handleResponse(response){ var serverData=''; response.on('data',function(chunk){ serverData+=chunk; }); response.on('end',function(){ console.log(serverData); }); } http.request(options,function(response){ handleResponse(response); }).end();

    nodejs,HTTP服务,HTTP

    实现动态的GET服务器

    var http=require('http'); var messages=[ 'message1', 'message2', 'message3' ]; http.createServer(function(req,res){ res.setHeader('Content-Type','text/html'); res.writeHead(200); res.write('<html><head><title>HTTP Server</title></head>'); res.write('<body>'); for(var idx in messages){ res.write('\n<h1>'+messages[idx]+'</h1>'); } res.end('\n</body></html>'); }).listen(8080); var options={ hostname:'localhost', port:'8080' }; function handleResponse(response){ var serverData=''; response.on('data',function(chunk){ serverData+=chunk; }); response.on('end',function(){ console.log('response status: ',response.statusCode); console.log('response headers: ',response.headers); console.log(serverData); }); } http.request(options,function(response){ handleResponse(response); }).end();

    nodejs,HTTP服务,HTTP

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU源码库。


    注:相关教程知识阅读请移步到频道。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • nodejs修改全局安装路径

      nodejs修改全局安装路径

      2017-08-23 11:00

    • nodejs利用ajax实现网页无刷新上传图片实例代码

      nodejs利用ajax实现网页无刷新上传图片实例代码

      2017-08-17 10:00

    • ajax上传文件是怎么实现的

      ajax上传文件是怎么实现的

      2017-08-06 08:03

    • ajax Post之后的页面跳转问题

      ajax Post之后的页面跳转问题

      2017-06-02 16:01

    网友点评