如果你不介意包裝你的核心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