From ef17dec1950a58ecaf833ebd7c0c418cede126f4 Mon Sep 17 00:00:00 2001 From: cubedro Date: Tue, 28 Apr 2015 07:05:04 +0300 Subject: [PATCH] fixed debounce delay --- lib/node.js | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/lib/node.js b/lib/node.js index 89cc2b2..d51a978 100644 --- a/lib/node.js +++ b/lib/node.js @@ -113,6 +113,9 @@ function Node() this.updateInterval = false; this.pingInterval = false; + this._lastLatestLog = 0; + this._lastPendingLog = 0; + socket.on('open', function open() { socket.emit('hello', { id: self.id, info: self.info, secret: WS_SECRET }); console.info('The connection has been opened.'); @@ -487,9 +490,21 @@ Node.prototype.setWatches = function() this.pendingFilter = web3.eth.filter('pending'); this.pendingFilter.watch( function(log) { if(PENDING_WORKS) { - debounce(function() { - self.updatePending(); - }, 50); + var now = (new Date()).getTime(); + var time = now - self._lastPendingLog; + + if(time > 50) + { + self.update(); + } + else + { + debounce(function() { + self.updatePending(); + }, 50); + } + + self._lastPendingLog = now; } }); } @@ -501,10 +516,23 @@ Node.prototype.setWatches = function() try { this.chainFilter = web3.eth.filter('latest'); - this.chainFilter.watch(function(log) { - debounce(function() { + this.chainFilter.watch(function(log) + { + var now = (new Date()).getTime(); + var time = now - self._lastLatestLog; + + if(time > 50) + { self.update(); - }, 50); + } + else + { + debounce(function() { + self.update(); + }, 50); + } + + self._lastLatestLog = now; }); } catch (err)