速率限制 - TCP 服务器 (net.Server)

Rate-Limit - TCP Server (net.Server)

我正在使用 net.Server 作为我的 TCP 服务器。

如何执行消息速率限制?

我为 Express (express-rate-limit) and Websocket (websocket-rate-limit) 找到了类似的解决方案,但没有为 TCP 找到类似的解决方案。

rate-limiter-flexible 包可用于此目的。

它支持Redis、MongoDB等多种存储。下面是最简单的内存存储示例:

const opts = {
  points: 10, // 10 points
  duration: 1, // Per second
};

const rateLimiter = new RateLimiterMemory(opts);

rateLimiter.consume(remoteAddress, 1) // consume 1 point
    .then((rateLimiterRes) => {
      // 1 point consumed
      // Some app logic here
    })
    .catch((rateLimiterRes) => {
      // Not enough points to consume
    });

More examples on Wiki