繁体   English   中英

node.js node-http-proxy没有收到预告片

[英]node.js node-http-proxy not receiving trailers

我在Node的响应中添加了一个预告片,但似乎无法将预告片作为消息的一部分接收。 我想使用它将计时信息发送回我在Node中编写的负载均衡器,以便它可以监视特定工作线程中的请求是否长时间排队。

我正在尝试使用一个基本的应用程序才能使其首先运行,这是我从addTrailers的文档中获取的

var http = require("http");

var server = http.createServer(function (req, res) {
     var fileData = "Hello World!";
     res.writeHead(200, { 'Content-Type': 'text/plain',
     'Trailer': 'my-trailer' });
     res.write(fileData);
     res.write("\r\n");
     res.addTrailers({'my-trailer': 'test'});
     res.end();
});
server.listen(12345);

我在负载均衡器中使用了node-http-proxy,它没有收到预告片,Charles Proxy没有显示预告片,而且curl 7.35也没有。 但是,wireshark会在数据包末尾显示数据:

c
Hello World!
2


0
my-trailer: test

有谁知道您需要做什么才能让Node从消息中解析预告片,而不是丢弃它?

经过深入的研究,直到http.ClientRequest发出end事件(我认为这很有意义)之后,才会设置预告片。 它没有记录在node-http-proxy上,而是查看它发出的代码。

因此我们可以为end事件设置处理程序

proxy = httpProxy.createProxyServer();
proxy.on("end", function(req, res, proxyRes){
    console.log(proxyRes.trailers);
});
proxy.listen(8000);

我的拖车就在那里!

{ 'x-worker-duration': '7.397' }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM