NodeJs中有多个连接
问题描述:
我需要通过NodeJs下载脚本,这限制了每个会话的连接数量和速度。NodeJs中有多个连接
我可以读取文件和写入是由NodeJs响应,也许我可以限制速度sleep npm包,但我应该如何支持多个连接来在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;
});
}
如果用户尝试请求由IDM当前页中,只有一个连接由接受的NodeJS,我需要将其限制到不同数量的用户A和用户B.如7或8的连接15 – 2013-04-29 07:44:41