HTTP代理:拒绝半处理的请求

我有基于Node.js的HTTP代理,它以stream的方式转换响应正文。 例如,我的代理像nginx一样工作,它压缩(使用libz作为gzip)响应主体。 总体方案:

但是我有一个疑问:如果数据交换期间上游连接发生错误,该怎么办? 如何通知客户关于en错误,当响应已经发送和正在发送正在进行中。 客户端的错误确定的复杂性基于Content-Length由于源和经转换的数据不匹配而不存在响应的事实。

为了澄清一些细节,我添加了一段简单的代码:

 var express = require("express"); var http = require("http"); var url = require('url'); var webApp = express(); var httpServer = webApp.listen(8080, function () { console.log("server started on ", 8080, " port"); }); webApp.get("*", function(req, res) { var targetRequest = http.get(req.originalUrl, function (upstreamResponse) { if (upstreamResponse.statusCode != 200) { res.status(500).send("Internal Server Error"); return; } upstreamResponse.on("data", function (chunk) { /// transform chunk and send it to the client res.write(chunk); }); upstreamResponse.on("end", function () { res.end(); }); /// upstream connection error occured upstreamResponse.on("error", function (error) { /// How to properly notify client /// about error ???? /// ???? }); }); });