我需要通过 NodeJs 制作下载脚本,这限制了每个会话的连接数和速度。
我可以读写是NodeJs的响应,也许我可以通过npm的sleep包限制速度,但是我应该如何支持多个连接在NodeJs中下载文件?
例如,当用户通过 IDM 下载它时,他/她可以在下载过程中看到 7 或 8 个连接。
在 apache 中,它可以通过mode_limitipconn和bw_mod 来完成
我的意思是像 RapidShare 这样限制每个类别的速度和连接数的东西。
我需要通过 NodeJs 制作下载脚本,这限制了每个会话的连接数和速度。
我可以读写是NodeJs的响应,也许我可以通过npm的sleep包限制速度,但是我应该如何支持多个连接在NodeJs中下载文件?
例如,当用户通过 IDM 下载它时,他/她可以在下载过程中看到 7 或 8 个连接。
在 apache 中,它可以通过mode_limitipconn和bw_mod 来完成
我的意思是像 RapidShare 这样限制每个类别的速度和连接数的东西。
您要做的是将对资源的访问限制为一次只能访问一个 IP 地址。
这对 Node 来说相当容易,因为所有请求都由一个进程提供服务。
您可以在发出请求时将 IP 地址输入到对象中,然后在新请求进入重复项时检查该对象。
如果您使用 Express 并且在模块中有路由,则可以将 IP 连接对象放在路由模块的顶层。
var connectedIPs = {};
exports.myDownloadRoute = function(request, response) {
var IP = request.connection.remoteAddress;
if(connectedIPs.IP) {
response.redirect("http://mysite.com/download_rules.html");
return;
}
connectedIPs.IP = true;
// pseudo send a file call, replace this with your code
send_a_file(function(err) {
// done sending or error, remove from connectedIPs
delete connectedIPs.IP;
});
}