Refactor socket.io controller

This commit is contained in:
Calvin Montgomery 2017-08-01 19:29:11 -07:00
parent 107155a661
commit 0118a6fb15
10 changed files with 480 additions and 253 deletions

26
src/util/token-bucket.js Normal file
View file

@ -0,0 +1,26 @@
class TokenBucket {
constructor(capacity, refillRate) {
this.capacity = capacity;
this.refillRate = refillRate;
this.count = capacity;
this.lastRefill = Date.now();
}
throttle() {
const now = Date.now();
const delta = Math.floor((now - this.lastRefill) / 1000 * this.refillRate);
if (delta > 0) {
this.count = Math.min(this.capacity, this.count + delta);
this.lastRefill = now;
}
if (this.count === 0) {
return true;
} else {
this.count--;
return false;
}
}
}
export { TokenBucket };