From 3009c16b869699acee3a30005dd6e77b2f0b9442 Mon Sep 17 00:00:00 2001 From: Stefan Mendoza <142330597+stefanmendoza-cb@users.noreply.github.com> Date: Mon, 21 Aug 2023 15:11:36 -0400 Subject: [PATCH] [api] Attempt reconnection on websocket errors (#65) Co-authored-by: Dmitryii Osipov --- server/src/helpers/gear.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/server/src/helpers/gear.ts b/server/src/helpers/gear.ts index 4047ae6..d5fa287 100644 --- a/server/src/helpers/gear.ts +++ b/server/src/helpers/gear.ts @@ -29,12 +29,27 @@ export class GearApi { runtime: this.runtime, signedExtensions: this.signedExtensions, }); + + this.api.on('connected', () => { + logger.info('Connected established!'); + }); + this.api.on('disconnected', () => { - logger.warn('Reconnection...'); + logger.warn('Disconnected from node. Attempting to reconnect.'); this.connect(); }); + + this.api.on('error', (err: Error) => { + logger.error( + 'An error occurred with the node connection. Sleeping for 60 seconds then attempting to reconnect.', + { error: err } + ); + + const sleep = (ms: number) => new Promise(r => setTimeout(r, ms)); + sleep(60000).then(this.connect); + }); + this.genesis = this.api.genesisHash.toHex(); - return this.api; } static async connect(config: NetworkConfig): Promise {