2013-04-29 43 views
0

我需要通过NodeJs下载脚本,这限制了每个会话的连接数量和速度。NodeJs中有多个连接

我可以读取文件和写入是由NodeJs响应,也许我可以限制速度sleep npm包,但我应该如何支持多个连接来在NodeJs中下载文件?

例如,当用户通过IDM下载时,他/她可以在下载期间看到7或8个连接。

在Apache中可以通过mode_limitipconnbw_mod

我的意思是这样RapidShare的,限制速度和连接数为每个类别做。

回答

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; 
    }); 
} 
+0

如果用户尝试请求由IDM当前页中,只有一个连接由接受的NodeJS,我需要将其限制到不同数量的用户A和用户B.如7或8的连接15 – 2013-04-29 07:44:41