请求模块,当浏览器取消时如何停止stream式传输

我想用我的服务器作为代理从另一台服务器stream式传输远程文件。

我有两个源代码来完成这项工作

http = require('http') http.createServer(function(req, res) { var externalReq = http.request({ hostname: "brave-download.global.ssl.fastly.net", path: "/releases/0.7.16/winx64/BraveSetup.exe" }, function(externalRes) { res.setHeader("content-disposition", "attachment; filename=File.exe"); externalRes.pipe(res); }); externalReq.end(); }).listen(8080); 

有了上面的代码,当我取消下载时,服务器(我的本地服务器)也将停止从远程服务器获取数据。

我有另一个源代码

 var http = require('http'), request = require('request'); http.createServer(function(req, res) { res.setHeader("content-disposition", "attachment; filename=File.exe"); request('https://brave-download.global.ssl.fastly.net/releases/0.7.16/winx64/BraveSetup.exe').pipe(res); }).listen(8080); 

这个源代码可以完成像上面那样的工作。 但是,当我从我的浏览器取消下载。 它不会停止从远程服务器获取数据。 它一直在获取数据,直到下载完成。

我的问题是我怎样才能使第二个代码停止从远程服务器获取数据,一旦我取消下载。

这应该听取消和中止请求。

 var http = require('http'), request = require('request'); http.createServer(function(req, res) { res.setHeader("content-disposition", "attachment; filename=File.exe"); var dl = request('https://brave-download.global.ssl.fastly.net/releases/0.7.16/winx64/BraveSetup.exe'); dl.pipe(res); req.on('close', function () { dl.abort(); }) }).listen(8080);