diff --git a/src/ORM/client/client.service.ts b/src/ORM/client/client.service.ts index 8798879..65a4995 100644 --- a/src/ORM/client/client.service.ts +++ b/src/ORM/client/client.service.ts @@ -45,8 +45,8 @@ export class ClientService { .execute(); } - public async heartbeat(address: string, clientName: string, sessionId: string, hashRate: number) { - return await this.clientRepository.update({ address, clientName, sessionId }, { hashRate, deletedAt: null, updatedAt: new Date() }); + public async heartbeat(address: string, clientName: string, sessionId: string, hashRate: number, updatedAt: Date) { + return await this.clientRepository.update({ address, clientName, sessionId }, { hashRate, deletedAt: null, updatedAt }); } // public async save(client: Partial) { diff --git a/src/models/StratumV1Client.ts b/src/models/StratumV1Client.ts index 52d0ce2..ed03bc1 100644 --- a/src/models/StratumV1Client.ts +++ b/src/models/StratumV1Client.ts @@ -516,7 +516,13 @@ export class StratumV1Client { } try { await this.statistics.addShares(this.sessionDifficulty); - await this.clientService.heartbeat(this.entity.address, this.entity.clientName, this.entity.sessionId, this.hashRate); + const now = new Date(); + // only update every minute + if (now.getTime() - this.entity.updatedAt.getTime() > 1000 * 60) { + await this.clientService.heartbeat(this.entity.address, this.entity.clientName, this.entity.sessionId, this.hashRate, now); + this.entity.updatedAt = now; + } + } catch (e) { console.log(e); const err = new StratumErrorMessage(