节点Js响应

时间:2017-04-27 05:19:34

标签: node.js web

我有一个关于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);

//请求处理函数 function 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 个答案:

答案 0 :(得分:2)

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

所以通过res.writeHead(200,{' content-type':' text / plain'});服务器正在写入响应文档的状态行 with response-header' 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!