美文网首页
node 的http使用

node 的http使用

作者: Amy_yqh | 来源:发表于2019-11-17 21:51 被阅读0次

    一、创建服务器

    const http = require('http')
    
    let server = http.createServer();
    
    server.on('request',(req,res)=>{
        res.end('xxx')
    })
    
    server.listen(8888,()=>{
        console.log('server start 8888')
    })
    然后在命令行 启动该文件,那么服务器就轻松启动拉!
    

    二、req请求数据

    const http = require('http')
    
    let server = http.createServer();
    
    server.on('request',(req,res)=>{
        // 请求信息
        console.log(req.url)
        console.log(req.method)
        console.log(req.headers)
        req.on('data',(data)=>{
            console.log(data.toString())
        })
        res.end('结束')
    })
    
    server.listen(8888,()=>{
        console.log('server start 8888')
    })
    
    注意:获取到的req数据,属性是只读
    

    三、res响应数据

    const http = require('http')
    
    let server = http.createServer();
    
    server.on('request',(req,res)=>{
        // 响应信息
        // 写头:多次写
        res.setHeader('a','a')
        res.setHeader('b','b')
        res.setHeader('c','c')
            // 写头:单次写  解决乱码
        res.writeHead(200,{'content-type':'text/html;charset=utf-8','d':'d'})
    
        res.write('百事比有果')
        res.write('你的报应就是我')
        res.end('结束')
    })
    
    server.listen(8888,()=>{
        console.log('server start 8888')
    })
    

    四、node返回页面

    app.js
    const http = require('http')
    const fs = require('fs')
    
    http.createServer((req,res)=>{
        if(req.url==='/'){
            fs.readFile('./index.html',(err,data)=>{
                res.writeHead(200,{'conten-type':'text/html;charset=utf-8'})
                res.end(data)
            })
        }
    }).listen('8888')
    
    
    index.html
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
          <div>返回的页面</div>
    </body>
    </html>
    

    五、以流的形式返回数据,实现简单版的即使通信

    const http = require('http')
    const fs = require('fs')
    
    http.createServer((req,res)=>{
        if(req.url==='/'){
            fs.readFile('./index.html',(err,data)=>{
                res.writeHead(200,{'conten-type':'text/html;charset=utf-8'})
                res.end(data)
            })
        }else if(req.url==='/test'&& req.method === 'GET'){
            res.writeHead(200,{'content-type':'application/octet-stream'})
            setInterval(function() {
                res.write(''+Date.now() +'^_^');
            },1000);
        }
    }).listen('8888')
    
    index.html
    
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
          <span id="info"></span>
          <button id="btn">点我发</button>
          <script type="text/javascript">
            var info = document.querySelector('#info');
            document.querySelector('#btn').onclick = function () {
                //  发起ajax请求
                var xhr = new XMLHttpRequest();
                xhr.open('get','/test');
                xhr.send();
                // 处理响应
                xhr.onreadystatechange = function () {
                  // readyState = 3 的时候是响应中
                  console.log(xhr.readyState); //1,2,3,4
                  console.log(xhr.responseText);
                  var arr = xhr.responseText.split('^_^')
                  console.log(arr[arr.length-2]);
                  info.innerText = arr[arr.length-2];
                }
            }
    
    
          </script>
    </body>
    </html>
    
    以流的形式返回数据给前端,必须把'content-type'设置为'application/octet-stream'
    

    相关文章

      网友评论

          本文标题:node 的http使用

          本文链接:https://www.haomeiwen.com/subject/vfemictx.html