如果你不介意包装你的核心HTTP例如,你可以使用ExpressJS然后注入express-blacklist
和express-defend
中间件。但是,它们看起来并不像express-rate-limit
那样常用。
如果你不需要黑名单,只是想限制请求的速度有express-rate-limit
,这比我上面提到的两个中间件更受欢迎。
请参阅下面的中间件代码片段,了解上述文档中的express-blacklist和express-defend。
var expressDefend = require('express-defend');
var blacklist = require('express-blacklist');
app.use(blacklist.blockRequests('blacklist.txt'));
app.use(expressDefend.protect({
maxAttempts: 5,
dropSuspiciousRequest: true,
logFile: 'suspicious.log',
onMaxAttemptsReached: function(ipAddress, url){
blacklist.addAddress(ipAddress);
}
}));
很好,我在问什么(谢谢!),但提出了问题:表达速度限制或表达防卫干扰socket.io?这款游戏是一款“实时”多人射击游戏。 – Alderin
它们不应该是因为它们不是使用Socket.io注册的中间件,而是Express,它们只应该影响Express路由。 – peteb