From c9b161423db6c52320fb2971ea924e11394b31fa Mon Sep 17 00:00:00 2001 From: softsimon Date: Sun, 1 Mar 2020 00:42:41 +0700 Subject: [PATCH] Send git-commit hash to client on reconnect to force client reload on backend update --- backend/src/api/websocket-handler.ts | 15 ++++++++++++++- frontend/src/app/services/websocket.service.ts | 13 +++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/backend/src/api/websocket-handler.ts b/backend/src/api/websocket-handler.ts index 69f478fb2..fc2096cc6 100644 --- a/backend/src/api/websocket-handler.ts +++ b/backend/src/api/websocket-handler.ts @@ -1,4 +1,5 @@ import * as WebSocket from 'ws'; +import * as fs from 'fs'; import { Block, TransactionExtended, Statistic } from '../interfaces'; import blocks from './blocks'; import memPool from './mempool'; @@ -7,8 +8,19 @@ import fiatConversion from './fiat-conversion'; class WebsocketHandler { private wss: WebSocket.Server | undefined; + private latestGitCommitHash = ''; - constructor() { } + constructor() { + this.setLatestGitCommit(); + } + + setLatestGitCommit() { + try { + this.latestGitCommitHash = fs.readFileSync('../.git/refs/heads/master').toString().trim(); + } catch (e) { + console.log('Could not load git commit info, skipping.'); + } + } setWebsocketServer(wss: WebSocket.Server) { this.wss = wss; @@ -59,6 +71,7 @@ class WebsocketHandler { 'blocks': _blocks, 'conversions': fiatConversion.getTickers()['BTCUSD'], 'mempool-blocks': mempoolBlocks.getMempoolBlocks(), + 'git-commit': this.latestGitCommitHash })); } } catch (e) { diff --git a/frontend/src/app/services/websocket.service.ts b/frontend/src/app/services/websocket.service.ts index a89d09ce0..0104b79a0 100644 --- a/frontend/src/app/services/websocket.service.ts +++ b/frontend/src/app/services/websocket.service.ts @@ -17,6 +17,7 @@ export class WebsocketService { private lastWant: string[] | null = null; private trackingTxId: string | null = null; private trackingAddress: string | null = null; + private latestGitCommit = ''; constructor( private stateService: StateService, @@ -58,6 +59,18 @@ export class WebsocketService { this.stateService.mempoolBlocks$.next(response['mempool-blocks']); } + if (response['git-commit']) { + if (!this.latestGitCommit) { + this.latestGitCommit = response['git-commit']; + } else { + if (this.latestGitCommit !== response['git-commit']) { + setTimeout(() => { + window.location.reload(); + }, Math.floor(Math.random() * 60000) + 1000); + } + } + } + if (response['address-transactions']) { response['address-transactions'].forEach((addressTransaction: Transaction) => { this.stateService.mempoolTransactions$.next(addressTransaction);