zoukankan      html  css  js  c++  java
  • Node.js之HTTP模块学习

     HTTP模块介绍:

    nodejs中的http模块封装了一个http服务器模块和一个简易的http客户端。

    http.Server是一个基于事件的http服务器

    http.request是http客户端工具,用于向http服务器发起请求

    如fs模块一样,需要先引用http模块:

    var http = require('http'); //读取内置http模块,这个模块提供了http服务

    创建HTTP服务器:

    res表示response服务器返回给客户端的响应,下面语法表示设置响应头部信息。

    1 res.setHeader("Content-type", "text/html;charset=UTF8");
    2 
    3 res.writeHead(200, {'Content-Type':'text/html;charset=UTF8'});

    以上方法更倾向于使用writeHead,因为可以设置状态码,还能设置多个响应头信息。

     1 var http = require("http");
     2 
     3     //req表示request用户的请求
     4     //res表示response服务器的响应
     5 var server = http.createServer(function(req, res) {
     6     ////设置响应报文头,让类型变为html并且是utf8编码
     7     //    res.setHeader("content-type","text/html;charset=UTF-8");//第一种方式  为了HTML显示防止乱码插入响应头
     8     //一定要注意writeHeader是驼峰写法
     9     res.writeHeader(200, {"Content-Type": "text/html;charset=UTF-8"}); //第二种方式  当服务器访问200成功是,响应头返回并显示HTML页面防止乱码
    10     res.write('<h1>node.js学习 <h1>');
    11     res.write('<h3>第一种方式  为了HTML显示防止乱码插入响应头</h3>');
    12     res.write('<h3>第二种方式  当服务器访问200成功是,响应头返回并显示HTML页面防止乱码</h3>');
    13     //页面上输出内容,输出内容用write,end表示结束!
    14     res.end('<h1>一定要注意writeHeader是驼峰写法</h1>');
    15 });
    16 
    17 //监听8000端口,默认是80端口,但80被Apache占用了,所以改用8000
    18 server.listen(8000, function(err) {
    19 
    20     if(err) {
    21         console.log("服务器开启失败!");
    22         return;
    23     }
    24     console.log("服务器启动成功,请到127.0.0.100:8000端口中打开查看")
    25 });

    打印结果:

    在浏览器中,看不到后端node的源代码:

    原因是Nodejs执行在服务器端,语句在服务器被执行、编译,此时发给浏览器的就是执行之后、编译后的纯文本了,不含有计算的。

    req(request)的方法:直接console.log()使用就可以。

    1 req.url                            //表示访问路径
    2 
    3 req.headers                        //获取请求头信息
    4 
    5 req.headers["user-agent"]          //浏览器信息
    6 
    7 req.headers["host"]                //域名信息
    8 
    9 req.connection.remoteAddress       //表示访问者的ip地址

    node.js是单线程的通过下面代码可以证明:

    我们会发现不是每个访问者来了都有新的a值,而是全班共用一个a,每个人访问的时候看到的都是已经被刷过的a值。

    1 var http = require("http");
    2 var a = 0;
    3 http.createServer(function(req,res){
    4     a++;
    5     res.end(a.toString())
    6 }).listen(3000);

    异步I/O特性获取访问IP 及req.connection.remoteAddress

     1 //创建fs模块
     2 var fs=require("fs");
     3 //创建http模块
     4 var http = require("http");
     5 var server = http.createServer(function(req,res){
     6      //用户访问的时候执行的语句。
     7     console.log(req.connection.remoteAddress + "进门了!我招呼他去!");
     8     res.setHeader("Content-Type","text/html;charset=UTF8");
     9 
    10     console.log(req.connection.remoteAddress + "用户开始读1号文件");
    11      fs.readFile("./aaa/01.txt", "utf8", function(err,data1){
    12          console.log(req.connection.remoteAddress + "用户读完毕1号文件,开始读2号文件");
    13          fs.readFile("./aaa/02.txt", "utf8", function(err,data2){
    14              console.log(req.connection.remoteAddress+"用户读完2号文件,开始发送response");
    15              
    16              res.write("<h1>" + data1 +"</h1>");
    17              res.write("<h1>" + data2 +"</h1>");
    18              res.end();
    19          });
    20      });
    21 });
    22 server.listen(3000)

    执行如下:

     

     

  • 相关阅读:
    function与感叹号
    js中的|| 与 &&
    [转] html屏蔽右键、禁止复制
    ExtJS 5.1 WINDOW BLUR
    ExtJS 网页版执行工具
    Excel 随即获得一组数据集中的数据
    [转] Spring Data JPA Tutorial: Pagination
    Set up eclipse for Ext js and spket IDE plugin
    ExtJS Alias, xtype and widget
    ExtJS stores
  • 原文地址:https://www.cnblogs.com/xuyx/p/10834637.html
Copyright © 2011-2022 走看看