From be4f7b5020075670b4ac8d6c4ba2951efbc5991d Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Mon, 21 Aug 2017 13:32:34 +0200 Subject: [PATCH] [fix] #1080 Broadcast only HEAD changes --- app/modules/bma/lib/bma.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/modules/bma/lib/bma.ts b/app/modules/bma/lib/bma.ts index d3a2967c7..6569d3f60 100644 --- a/app/modules/bma/lib/bma.ts +++ b/app/modules/bma/lib/bma.ts @@ -10,6 +10,7 @@ import {TransactionBinding} from "./controllers/transactions" import {UDBinding} from "./controllers/uds" import {PeerDTO} from "../../../lib/dto/PeerDTO" import {BlockDTO} from "../../../lib/dto/BlockDTO" +import {OtherConstants} from "../../../lib/other_constants" const co = require('co'); const es = require('event-stream'); @@ -132,16 +133,24 @@ export const bma = function(server:Server, interfaces:NetworkInterface[], httpLo }); wssPeer.broadcast = (data:any) => wssPeer.clients.forEach((client:any) => client.send(data)); - // Forward blocks & peers + // Forward current HEAD change server - .pipe(es.mapSync(function(data:any) { - try { - // Broadcast block - if (data.joiners) { - currentBlock = data; + .on('bcEvent', (e) => { + if (e.bcEvent === OtherConstants.BC_EVENT.HEAD_CHANGED || e.bcEvent === OtherConstants.BC_EVENT.SWITCHED) { + try { + // Broadcast block + currentBlock = e.block; const blockDTO:BlockDTO = BlockDTO.fromJSONObject(currentBlock) wssBlock.broadcast(JSON.stringify(block2HttpBlock(blockDTO))) + } catch (e) { + logger && logger.error('error on ws mapSync:', e); } + } + }) + // Forward peers documents + server + .pipe(es.mapSync(function(data:any) { + try { // Broadcast peer if (data.endpoints) { const peerDTO = PeerDTO.fromJSONObject(data) -- GitLab