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.getPeerInfo());
|
||||
print(bitcoind.wallet.listAccounts());
|
||||
bitcoind.on('version', function(version) {
|
||||
print('Version packet:');
|
||||
print(version);
|
||||
});
|
||||
}, 7000);
|
||||
}
|
||||
|
||||
|
|
|
@ -252,6 +252,10 @@ Bitcoin.prototype.start = function(options, callback) {
|
|||
this._emitted = {};
|
||||
|
||||
this.on('newListener', function(name) {
|
||||
if (name === 'version' || name === 'peer') {
|
||||
self._pollPeers();
|
||||
return;
|
||||
}
|
||||
if (name === 'block') {
|
||||
self._pollBlocks();
|
||||
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) {
|
||||
return bitcoindjs.getBlock(blockHash, function(err, block) {
|
||||
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>("whitelisted"), NanNew<Boolean>(stats.fWhitelisted));
|
||||
// obj->Set(NanNew<String>("relaytxes"), NanNew<Boolean>(stats.fRelayTxes));
|
||||
|
||||
array->Set(i, obj);
|
||||
i++;
|
||||
|
|
Loading…
Reference in New Issue