add "peer" and "version" event.
This commit is contained in:
parent
6f6a596990
commit
6fadefe761
@ -48,6 +48,10 @@ bitcoind.on('open', function(status) {
|
|||||||
print(bitcoind.getInfo());
|
print(bitcoind.getInfo());
|
||||||
print(bitcoind.getPeerInfo());
|
print(bitcoind.getPeerInfo());
|
||||||
print(bitcoind.wallet.listAccounts());
|
print(bitcoind.wallet.listAccounts());
|
||||||
|
bitcoind.on('version', function(version) {
|
||||||
|
print('Version packet:');
|
||||||
|
print(version);
|
||||||
|
});
|
||||||
}, 7000);
|
}, 7000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -252,6 +252,10 @@ Bitcoin.prototype.start = function(options, callback) {
|
|||||||
this._emitted = {};
|
this._emitted = {};
|
||||||
|
|
||||||
this.on('newListener', function(name) {
|
this.on('newListener', function(name) {
|
||||||
|
if (name === 'version' || name === 'peer') {
|
||||||
|
self._pollPeers();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (name === 'block') {
|
if (name === 'block') {
|
||||||
self._pollBlocks();
|
self._pollBlocks();
|
||||||
return;
|
return;
|
||||||
@ -364,6 +368,33 @@ Bitcoin.prototype._pollMempool = function() {
|
|||||||
})();
|
})();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// XXX Not perfect - will not catch all version packets.
|
||||||
|
Bitcoin.prototype._pollPeers = function() {
|
||||||
|
var self = this;
|
||||||
|
if (this._pollingPeers) return;
|
||||||
|
this._pollingPeers = true;
|
||||||
|
var peers = bitcoindjs.getPeerInfo();
|
||||||
|
(function next() {
|
||||||
|
var newPeers = bitcoindjs.getPeerInfo();
|
||||||
|
newPeers = newPeers.filter(function(peer, i) {
|
||||||
|
return !peers[i] || peer.addr !== peers[i].addr;
|
||||||
|
});
|
||||||
|
newPeers.forEach(function(peer) {
|
||||||
|
self.emit('peer', peer);
|
||||||
|
self.emit('version', {
|
||||||
|
version: peer.version,
|
||||||
|
services: peer.services,
|
||||||
|
time: peer.conntime,
|
||||||
|
nonce: null,
|
||||||
|
useragent: peer.subver,
|
||||||
|
startheight: peer.startingheight,
|
||||||
|
relay: null // peer.fRelayTxes
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return setTimeout(next, self.pollInterval);
|
||||||
|
})();
|
||||||
|
};
|
||||||
|
|
||||||
Bitcoin.prototype.getBlock = function(blockHash, callback) {
|
Bitcoin.prototype.getBlock = function(blockHash, callback) {
|
||||||
return bitcoindjs.getBlock(blockHash, function(err, block) {
|
return bitcoindjs.getBlock(blockHash, function(err, block) {
|
||||||
if (err) return callback(err);
|
if (err) return callback(err);
|
||||||
|
|||||||
@ -1584,6 +1584,7 @@ NAN_METHOD(GetPeerInfo) {
|
|||||||
}
|
}
|
||||||
obj->Set(NanNew<String>("syncnode"), NanNew<Boolean>(stats.fSyncNode));
|
obj->Set(NanNew<String>("syncnode"), NanNew<Boolean>(stats.fSyncNode));
|
||||||
obj->Set(NanNew<String>("whitelisted"), NanNew<Boolean>(stats.fWhitelisted));
|
obj->Set(NanNew<String>("whitelisted"), NanNew<Boolean>(stats.fWhitelisted));
|
||||||
|
// obj->Set(NanNew<String>("relaytxes"), NanNew<Boolean>(stats.fRelayTxes));
|
||||||
|
|
||||||
array->Set(i, obj);
|
array->Set(i, obj);
|
||||||
i++;
|
i++;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user