From 2bb14c9a70a447e6df934eb4058314dfb3093740 Mon Sep 17 00:00:00 2001 From: AlecM33 Date: Sat, 21 Jan 2023 21:39:54 -0500 Subject: [PATCH] simplify async code --- index.js | 8 +- server/modules/singletons/EventManager.js | 114 ++++++++++------------ 2 files changed, 60 insertions(+), 62 deletions(-) diff --git a/index.js b/index.js index 4099846..65d89ac 100644 --- a/index.js +++ b/index.js @@ -32,8 +32,12 @@ singletons.eventManager.timerManager = timerManager.instance; singletons.eventManager.gameManager = GameManager.instance; - await singletons.eventManager.createRedisPublisher(); - await singletons.eventManager.createGameSyncSubscriber(singletons.gameManager, singletons.eventManager); + try { + await singletons.eventManager.createRedisPublisher(); + await singletons.eventManager.createGameSyncSubscriber(singletons.gameManager, singletons.eventManager); + } catch(e) { + reject(e); + } const socketServer = singletons.eventManager.createSocketServer(webServer, app, port); diff --git a/server/modules/singletons/EventManager.js b/server/modules/singletons/EventManager.js index a84c977..2c8c761 100644 --- a/server/modules/singletons/EventManager.js +++ b/server/modules/singletons/EventManager.js @@ -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 + ); } - }); + } }); }