节点Js响应

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

所以从我的理解我的HTML和JavaScript我请求一个路线。 我检查路线的请求,并让它说一个get方法。 我写头会写一个HTTP响应的头。 如果我发送res.write(“一些文本”)会发生什么情况。

我问的是你能解释一下客户端和服务器之间的通信过程和实际情况。

我有点困惑的答复是这一个消息被发回或像这样的一个stream。

有关整个过程的解释,将不胜感激。

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

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

//创build服务器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!"); }; 

为了解释这个问题,我们可以考虑一个类比,其中一个响应可以被看作是具有以下实体的文档:状态行(response-header)[message-body]

所以通过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,它将messaged附加到消息体。

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

我正在附加请求 – 响应生命周期

 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!