From 994c42440d724604f67c844472e5a69e90bcf735 Mon Sep 17 00:00:00 2001 From: softsimon Date: Mon, 9 Mar 2020 01:41:43 +0700 Subject: [PATCH] Adding more websocket connection reconnect fail safe. fixes #44 --- frontend/src/app/services/websocket.service.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/services/websocket.service.ts b/frontend/src/app/services/websocket.service.ts index 018d69038..c480ab682 100644 --- a/frontend/src/app/services/websocket.service.ts +++ b/frontend/src/app/services/websocket.service.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; import { webSocket, WebSocketSubject } from 'rxjs/webSocket'; import { WebsocketResponse } from '../interfaces/websocket.interface'; -import { retryWhen, tap, delay } from 'rxjs/operators'; import { StateService } from './state.service'; import { Block, Transaction } from '../interfaces/electrs.interface'; import { Subscription } from 'rxjs'; @@ -21,6 +20,7 @@ export class WebsocketService { private latestGitCommit = ''; private onlineCheckTimeout: number; private onlineCheckTimeoutTwo: number; + private connectionCheckTimeout: number; private subscription: Subscription; constructor( @@ -30,6 +30,12 @@ export class WebsocketService { } startSubscription() { + this.connectionCheckTimeout = window.setTimeout(() => { + console.log('WebSocket failed to connect, force closing, trying to reconnect in 10 seconds'); + this.websocketSubject.complete(); + this.subscription.unsubscribe(); + this.goOffline(); + }, 5000); this.websocketSubject.next({'action': 'init'}); this.subscription = this.websocketSubject .subscribe((response: WebsocketResponse) => { @@ -112,6 +118,7 @@ export class WebsocketService { this.stateService.isOffline$.next(false); } + clearTimeout(this.connectionCheckTimeout); this.startOnlineCheck(); }, (err: Error) => {