0

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

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

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

在 apache 中,它可以通过mode_limitipconnbw_mod 来完成

我的意思是像 RapidShare 这样限制每个类别的速度和连接数的东西。

4

1 回答 1

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;
  }); 
}
于 2013-04-29T07:21:16.227 回答