Poll for and delete inactive rooms #77

This commit is contained in:
Alan Friedman 2019-05-28 08:35:18 -04:00 committed by GitHub
parent a70efc5674
commit e4c4176cf1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 0 deletions

View File

@ -0,0 +1,21 @@
import { getRedis } from './index'
export async function pollForInactiveRooms() {
const redis = getRedis();
console.log('Checking for inactive rooms...');
const rooms = await redis.hgetallAsync('rooms') || {};
console.log(`${Object.keys(rooms).length} rooms found`);
Object.keys(rooms).forEach(async roomId => {
const room = JSON.parse(rooms[roomId]);
const timeSinceUpdatedInSeconds = (Date.now() - room.updatedAt) / 1000;
const timeSinceUpdatedInDays = Math.round(timeSinceUpdatedInSeconds / 60 / 60 / 24);
if (timeSinceUpdatedInDays > 7) {
console.log(`Deleting roomId ${roomId} which hasn't been used in ${timeSinceUpdatedInDays} days`);
await redis.hdelAsync('rooms', roomId);
}
})
setTimeout(pollForInactiveRooms, (1000 * 60 * 60 * 12)); // every 12 hours
}

View File

@ -14,6 +14,7 @@ import crypto from 'crypto'
import mailer from './utils/mailer';
import koaStatic from 'koa-static';
import koaSend from 'koa-send';
import {pollForInactiveRooms} from './inactive_rooms';
bluebird.promisifyAll(Redis.RedisClient.prototype);
bluebird.promisifyAll(Redis.Multi.prototype);
@ -146,6 +147,8 @@ const init = async () => {
server.listen(PORT, () => {
console.log(`Darkwire is online at port ${PORT}`);
})
pollForInactiveRooms();
}
init()