From d171f182f05260373cf881895c62034508db2e46 Mon Sep 17 00:00:00 2001 From: Jermaine McFarlane Date: Tue, 8 Dec 2020 14:21:26 -0400 Subject: [PATCH 1/2] reconnect to socket once online --- .../src/realtime-subscription-handshake-link.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts b/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts index 61931f0f..c49ed10a 100644 --- a/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts +++ b/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts @@ -540,6 +540,17 @@ export class AppSyncRealTimeSubscriptionHandshakeLink extends ApolloLink { this.awsRealTimeSocket.onclose = event => { logger(`WebSocket closed ${event.reason}`); rej(new Error(JSON.stringify(event))); + + // Error code 1000 means that the connection was closed normally. + if (event.code === 1000 || navigator.onLine) { + rej(new Error(JSON.stringify(event))); + } else { + logger("You are offline. Reconnecting once online"); + // Initialize handshake once online again + window.addEventListener('online', () => { + this._initializeHandshake({ awsRealTimeUrl }); + }); + } }; this.awsRealTimeSocket.onmessage = (message: MessageEvent) => { From 19fbe4d6c394924a805a9779b7e549868b25fab0 Mon Sep 17 00:00:00 2001 From: Jermaine McFarlane Date: Tue, 8 Dec 2020 14:27:14 -0400 Subject: [PATCH 2/2] ensure single reject on socket close --- .../src/realtime-subscription-handshake-link.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts b/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts index c49ed10a..8fe1b71c 100644 --- a/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts +++ b/packages/aws-appsync-subscription-link/src/realtime-subscription-handshake-link.ts @@ -539,8 +539,6 @@ export class AppSyncRealTimeSubscriptionHandshakeLink extends ApolloLink { }; this.awsRealTimeSocket.onclose = event => { logger(`WebSocket closed ${event.reason}`); - rej(new Error(JSON.stringify(event))); - // Error code 1000 means that the connection was closed normally. if (event.code === 1000 || navigator.onLine) { rej(new Error(JSON.stringify(event)));