💻 TransactionHub almost done (Sync with local)
This commit is contained in:
parent
92fc304cd4
commit
cff7bcf373
|
@ -1,11 +1,17 @@
|
||||||
|
/* eslint-disable @typescript-eslint/no-floating-promises */
|
||||||
|
|
||||||
// SpookVooper API - modules/TransactionHub.ts
|
// SpookVooper API - modules/TransactionHub.ts
|
||||||
// Written by Brendan Lane - https://brndnln.dev/
|
// Written by Brendan Lane - https://brndnln.dev/
|
||||||
|
|
||||||
// import { Observable } from 'rxjs'
|
import { Observable } from 'rxjs'
|
||||||
import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr'
|
import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr'
|
||||||
import { ReturnedTransaction } from './interfaces/Interfaces'
|
import { ReturnedTransaction } from './interfaces/Interfaces'
|
||||||
|
|
||||||
const URI = 'https://spookvooper.com/transactionHub'
|
const URI = 'https://spookvooper.com/transactionHub'
|
||||||
|
const retryTime = 5
|
||||||
|
const retryTimeMS = retryTime * 1000
|
||||||
|
|
||||||
|
const fancy = true
|
||||||
|
|
||||||
class TransactionHub {
|
class TransactionHub {
|
||||||
private readonly connection = new HubConnectionBuilder()
|
private readonly connection = new HubConnectionBuilder()
|
||||||
|
@ -14,19 +20,58 @@ class TransactionHub {
|
||||||
.configureLogging(LogLevel.Information)
|
.configureLogging(LogLevel.Information)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
public event
|
|
||||||
|
|
||||||
private val: ReturnedTransaction
|
private val: ReturnedTransaction
|
||||||
|
|
||||||
public fromAccount: string
|
public fromAccount: string
|
||||||
public toAccount: string
|
public toAccount: string
|
||||||
|
|
||||||
constructor () {
|
public event = new Observable((observer) => {
|
||||||
this.connection.on('NotifyTransaction', (recieved: string) => {
|
this.connection.on('NotifyTransaction', (recieved: string) => {
|
||||||
this.val = JSON.parse(recieved)
|
this.val = JSON.parse(recieved)
|
||||||
this.fromAccount = this.val.FromAccount
|
this.fromAccount = this.val.FromAccount
|
||||||
this.toAccount = this.val.ToAccount
|
this.toAccount = this.val.ToAccount
|
||||||
|
|
||||||
|
observer.next(this.val)
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
constructor () {
|
||||||
|
this.connection.onclose(function (e: any): void {
|
||||||
|
this.onClosed(e)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
public async start (): Promise<void> {
|
||||||
|
console.log(`[TransactionHub] Starting connection between local and ${URI}`)
|
||||||
|
|
||||||
|
try {
|
||||||
|
await this.connection.start()
|
||||||
|
console.log('[TransactionHub] Connected!')
|
||||||
|
} catch (e) {
|
||||||
|
if (fancy) {
|
||||||
|
console.log('--------------------------------')
|
||||||
|
}
|
||||||
|
console.error('[TransactionHub] Error: Connection failed while trying to establish a connection\n', e)
|
||||||
|
if (fancy) {
|
||||||
|
console.log('--------------------------------')
|
||||||
|
}
|
||||||
|
console.log(`[TransactionHub] Retrying in ${retryTime} seconds`)
|
||||||
|
setTimeout(() => {
|
||||||
|
this.start()
|
||||||
|
}, retryTimeMS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async onClosed (e: any): Promise<void> {
|
||||||
|
if (fancy) {
|
||||||
|
console.log('--------------------------------')
|
||||||
|
}
|
||||||
|
console.error('[TransactionHub] Error: Connection closed unexpectedly', e)
|
||||||
|
if (fancy) {
|
||||||
|
console.log('--------------------------------')
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue