【问题标题】:Node Js response节点 Js 响应
【发布时间】:2017-09-24 17:49:08
【问题描述】:

我有一个关于 Node Js 响应的一般性问题,希望有人能解释当我说 res.WriteHead("blah blah") 时实际发生了什么。

因此,根据我对 html 和 javascript 的理解,我请求了一条路线。我检查了路由的请求,然后说它是一个 get 方法。我确实写了 head ,它将写一个 http 响应的头部。如果我发送 res.write("some text"); 会发生什么。

我要问的是你能解释一下客户端和服务器之间通信的过程以及真正发生的事情吗?

我对响应是这条消息被发回还是像流一样有点困惑。

我们将不胜感激对整个过程提供尽可能多的解释的答案。

我正在谈论的一些示例代码。请注意我正在使用 NodeJS

//加载http模块 var http = require('http');

//创建服务器 var server = http.createServer(handleRequest);

//启动服务器 server.listen(2000);

//请求处理函数 函数handleRequest(req, res) {

console.log(req.method+" request for "+req.url);

// content header
res.writeHead(200, {'content-type': 'text/plain'});

res.write("ohai!\n");

// write message body and send
res.end("Hello, World!"); };

【问题讨论】:

    标签: node.js web


    【解决方案1】:

    为了解释这一点,我们可以考虑一个类比,其中响应可以被视为具有 以下实体 - 状态行,(响应标头)[消息正文]

    所以通过 res.writeHead(200, {'content-type': 'text/plain'});服务器正在写入响应文档的状态行 带有响应头 'content-type': 'text/plain'

    通过 res.write("ohai!\n");服务器已开始写入消息正文的内容 res.end("Hello, World!"); 将被认为是完整的。在此之前,客户端将处于停滞状态,等待服务器提供请求的响应

    总结以上服务器端代码可能只有一个 res.writeHead 和 res.end 但可以使用多个 res.write 将消息附加到消息正文。

    在服务器上执行 res.end 后,服务器使用 HTTP 分块传输机制以块的形式发送响应,其中每个块的前面都有其大小。当遇到长度为零的块时,传输结束。

    我附上 request-response life-cycle

    app.get('/check', function (req, res) {
    res.writeHead(200, {'content-type': 'text/plain'});
    
    res.write("ohai!\n");
    res.write("I am!\n");
    res.write("good!\n");
    res.end("Hello, World!");
    })
    

    这导致了以下响应

    ohai!
    I am!
    good!
    Hello, World!
    

    【讨论】:

      猜你喜欢
      • 2020-09-08
      • 2015-08-19
      • 2021-01-03
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2013-06-08
      • 2020-11-06
      相关资源
      最近更新 更多