首页 文章

节点Js响应

提问于
浏览
2

我有一个关于Node Js响应的一般性问题,并且希望有人可以解释实际发生的事情,我可以说res.WriteHead(“blah blah”) .

所以从我在html和javascript中的理解,我提出了一个路由请求 . 我检查路由的请求,然后说它是一个get方法 . 我写的是头部,它会编写一个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!"); };

1 回答

  • 2

    为了解释这一点,我们可以考虑一个类比,其中响应可以被视为具有以下实体的文档 - Status-Line,(response-header)[message-body]

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

    通过res.write(“ohai!\ n”);服务器已经开始编写消息体的内容,这将被res.end认为是完整的(“Hello,World!”);直到那时客户端将处于停滞状态,等待服务器提供请求的响应

    总结上面的服务器端代码可能只有一个res.writeHead和res.end但可以使用多个res.write,它们将消息附加到message-body .

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

    我附上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!
    

相关问题