mirror of
https://github.com/AlecM33/Werewolf.git
synced 2025-12-26 15:57:50 +01:00
simplify async code
This commit is contained in:
@@ -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
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user