bitcore/examples/SimpleP2Pmonitor.js

73 lines
1.9 KiB
JavaScript

/**
* This is a simple script that will display network messages.
* It users the Peer / Connection classes directly instead of
* relying on PeerManager.
*/
// replace by require('bitcore') if you use somewhere else
var bitcore = require('../');
//bitcore.config.logger = 'debug';
var Peer = bitcore.Peer,
Connection = bitcore.Connection;
var peer = new Peer('127.0.0.1', 8333);
var socket = peer.createConnection();
var con = new Connection(socket, peer);
con.on('error', function (msg) {
var peer = msg.peer, err = msg.err;
console.error('Error connecting to peer', peer.host + ':' + peer.port, '(' + err.message + ')');
});
con.on('disconnect', function (msg) {
console.log('disconnect: ', msg);
});
con.on('connect', function (msg) {
console.log('Connected to %s', msg.peer.host + ':' + msg.peer.port);
});
/* Listen P2P messages */
// Make a log function available to all listeners
// The log function is just like console.log except it prefixes
// messages with [host:port]
function listen (event_name, fn) {
con.on(event_name, function (event) {
fn(event, function () {
var args = Array.prototype.slice.call(arguments);
var str = args.shift();
str = '[%s:%s] ' + str;
args = [ str, event.peer.host, event.peer.port ].concat(args);
console.log.apply(console, args);
});
});
}
listen('getaddr', function (event, log) {
log('Received message getaddr');
log(event);
});
listen('verack', function (event, log) {
log('Received message verack');
});
listen('version', function (event, log) {
log('Received message version (%s)', event.message.version);
});
listen('addr', function (event, log) {
log('Received message addr (%s addresses)', event.message.addrs.length);
});
listen('inv', function (event, log) {
log('Received message inv (%s invs)', event.message.count);
console.log(event.message.invs);
});