simplify async code

This commit is contained in:
AlecM33
2023-01-21 21:39:54 -05:00
parent 20bef74784
commit 2bb14c9a70
2 changed files with 60 additions and 62 deletions

View File

@@ -23,74 +23,68 @@ class EventManager {
this.io?.emit(globals.EVENTS.BROADCAST, message);
};
createRedisPublisher = () => {
return new Promise((resolve, reject) => {
this.publisher = process.env.NODE_ENV.trim() === 'development'
? redis.createClient()
: redis.createClient({
url: process.env.REDIS_URL
});
this.publisher.on('error', (e) => {
this.logger.error('REDIS PUBLISHER CLIENT ERROR:', e);
createRedisPublisher = async () => {
this.publisher = process.env.NODE_ENV.trim() === 'development'
? redis.createClient()
: redis.createClient({
url: process.env.REDIS_URL
});
try {
this.publisher.connect();
resolve();
} catch (e) {
reject(new Error('UNABLE TO CONNECT TO REDIS because: ' + e));
}
this.logger.info('EVENT MANAGER - CREATED PUBLISHER');
this.publisher.on('error', (e) => {
this.logger.error('REDIS PUBLISHER CLIENT ERROR:', e);
});
try {
await this.publisher.connect();
this.logger.info('EVENT MANAGER - CREATED PUBLISHER');
} catch (e) {
throw new Error('UNABLE TO CONNECT TO REDIS because: ' + e);
}
}
createGameSyncSubscriber = (gameManager, eventManager) => {
return new Promise((resolve, reject) => {
this.subscriber = this.publisher.duplicate();
this.subscriber.on('error', (e) => {
this.logger.error('REDIS SUBSCRIBER CLIENT ERROR:', e);
});
try {
this.subscriber.connect();
resolve();
this.logger.info('EVENT MANAGER - CREATED SUBSCRIBER');
} catch (e) {
reject(new Error('UNABLE TO CONNECT TO REDIS because: ' + e));
}
createGameSyncSubscriber = async (gameManager, eventManager) => {
this.subscriber = this.publisher.duplicate();
this.subscriber.on('error', (e) => {
throw new Error('REDIS SUBSCRIBER CLIENT ERROR: ' + e);
});
try {
await this.subscriber.connect();
this.logger.info('EVENT MANAGER - CREATED SUBSCRIBER');
} catch (e) {
throw new Error('UNABLE TO CONNECT TO REDIS because: ' + e);
}
this.subscriber.subscribe(globals.REDIS_CHANNELS.ACTIVE_GAME_STREAM, async (message) => {
this.logger.debug('MESSAGE: ' + message);
let messageComponents, args;
try {
messageComponents = message.split(';', 3);
if (messageComponents[messageComponents.length - 1] === this.instanceId) {
this.logger.trace('Disregarding self-authored message');
return;
}
args = JSON.parse(
message.slice(
message.indexOf(messageComponents[messageComponents.length - 1]) + (globals.INSTANCE_ID_LENGTH + 1)
)
);
} catch (e) {
this.logger.error('MALFORMED MESSAGE RESULTED IN ERROR: ' + e + '; DISREGARDING');
await this.subscriber.subscribe(globals.REDIS_CHANNELS.ACTIVE_GAME_STREAM, async (message) => {
this.logger.debug('MESSAGE: ' + message);
let messageComponents, args;
try {
messageComponents = message.split(';', 3);
if (messageComponents[messageComponents.length - 1] === this.instanceId) {
this.logger.trace('Disregarding self-authored message');
return;
}
if (messageComponents) {
const game = await gameManager.getActiveGame(messageComponents[0]);
if (game) {
await eventManager.handleEventById(
messageComponents[1],
messageComponents[messageComponents.length - 1],
game,
null,
game?.accessCode || messageComponents[0],
args || null,
null,
true
);
}
args = JSON.parse(
message.slice(
message.indexOf(messageComponents[messageComponents.length - 1]) + (globals.INSTANCE_ID_LENGTH + 1)
)
);
} catch (e) {
this.logger.error('MALFORMED MESSAGE RESULTED IN ERROR: ' + e + '; DISREGARDING');
return;
}
if (messageComponents) {
const game = await gameManager.getActiveGame(messageComponents[0]);
if (game) {
await eventManager.handleEventById(
messageComponents[1],
messageComponents[messageComponents.length - 1],
game,
null,
game?.accessCode || messageComponents[0],
args || null,
null,
true
);
}
});
}
});
}