我需要通过NodeJs 制作下载脚本,这会限制每个会话的连接数和速度。
我可以读取文件并写入是由NodeJs响应的,也许我可以通过sleep npm的包来限制速度,但是我应该如何支持在NodeJs中下载文件的多个连接?
例如,当用户通过IDM下载它时,他/她可以在下载期间看到7或8个连接。
在apache中,它可以通过 mode_limitipconn 和 bw_mod
来实现我的意思是像RapidShare这样限制每个类别的速度和连接数。
答案 0 :(得分:0)
您要做的是将资源访问限制为一次只有一个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;
});
}