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' }
我正在向 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' }