Send git-commit hash to client on reconnect to force client reload on backend update

This commit is contained in:
softsimon 2020-03-01 00:42:41 +07:00
parent 943d96ee8c
commit c9b161423d
2 changed files with 27 additions and 1 deletions

View File

@ -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) {

View File

@ -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);