我想使用我的服务器作为代理来从另一台服务器传输远程文件。
我有两个源代码来完成这些工作
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);
此源代码执行与上述相同的工作。但是当我从浏览器取消下载时。它不会停止从远程服务器获取数据。它会不断获取数据,直到下载完成。
我的问题是,当我取消下载后,如何让第二个代码停止从远程服务器获取数据。
答案 0 :(得分:2)
这应该听取取消并中止请求。
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);