From df9b15002ffef4862ba5a10899aa8213c806f751 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Thu, 7 Aug 2014 18:53:02 -0300 Subject: [PATCH 1/4] use socket.io-browserify --- app/controllers/socket.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/socket.js b/app/controllers/socket.js index 7406198c..706027e3 100644 --- a/app/controllers/socket.js +++ b/app/controllers/socket.js @@ -13,6 +13,7 @@ module.exports.init = function(io_ext, config) { if (ios) { // when a new socket connects ios.sockets.on('connection', function(socket) { + console.log("New connection from " + socket.request.connection.remoteAddress + ":" + socket.request.connection.remotePort); // when it subscribes, make it join the according room socket.on('subscribe', function(topic) { if (socket.rooms.length === 1) { From f79364df9777009306d6beda3816059688235cb1 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Thu, 7 Aug 2014 20:15:30 -0300 Subject: [PATCH 2/4] add debug logs --- app/controllers/socket.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/socket.js b/app/controllers/socket.js index 706027e3..dc2c334a 100644 --- a/app/controllers/socket.js +++ b/app/controllers/socket.js @@ -13,7 +13,7 @@ module.exports.init = function(io_ext, config) { if (ios) { // when a new socket connects ios.sockets.on('connection', function(socket) { - console.log("New connection from " + socket.request.connection.remoteAddress + ":" + socket.request.connection.remotePort); + console.log('New connection from ' + socket.request.connection.remotePort); // when it subscribes, make it join the according room socket.on('subscribe', function(topic) { if (socket.rooms.length === 1) { @@ -25,6 +25,7 @@ module.exports.init = function(io_ext, config) { if (enableMessageBroker) { // when it requests sync, send him all pending messages socket.on('sync', function(ts) { + console.log('Sync requested by ' + socket.request.connection.remotePort); var rooms = socket.rooms; if (rooms.length !== 2) { socket.emit('insight-error', 'Must subscribe with public key before syncing'); @@ -36,6 +37,7 @@ module.exports.init = function(io_ext, config) { if (err) { throw new Error('Couldn\'t get messages on sync request: ' + err); } + console.log('\tFound '+messages.length+' message'+(messages.length !== 1?'s':'')); for (var i = 0; i < messages.length; i++) { broadcastMessage(messages[i], socket); } @@ -44,6 +46,7 @@ module.exports.init = function(io_ext, config) { // when it sends a message, add it to db socket.on('message', function(m) { + console.log('Message sent from ' + m.pubkey +' to '+m.to); mdb.addMessage(m, function(err) { if (err) { throw new Error('Couldn\'t add message to database: ' + err); From dfab8fecb8689cc9d91ae8bd57b5997ea4b44257 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Tue, 19 Aug 2014 17:42:09 -0400 Subject: [PATCH 3/4] some logs and example code --- app/controllers/socket.js | 17 +++++++++++++---- examples/node-client.js | 34 ++++++++++++++++++++++++++++++++++ lib/PeerSync.js | 19 ++++++++++++------- package.json | 5 +++-- 4 files changed, 62 insertions(+), 13 deletions(-) create mode 100644 examples/node-client.js diff --git a/app/controllers/socket.js b/app/controllers/socket.js index dc2c334a..aea8056b 100644 --- a/app/controllers/socket.js +++ b/app/controllers/socket.js @@ -13,7 +13,7 @@ module.exports.init = function(io_ext, config) { if (ios) { // when a new socket connects ios.sockets.on('connection', function(socket) { - console.log('New connection from ' + socket.request.connection.remotePort); + console.log('New connection from ' + socket.id); // when it subscribes, make it join the according room socket.on('subscribe', function(topic) { if (socket.rooms.length === 1) { @@ -25,7 +25,8 @@ module.exports.init = function(io_ext, config) { if (enableMessageBroker) { // when it requests sync, send him all pending messages socket.on('sync', function(ts) { - console.log('Sync requested by ' + socket.request.connection.remotePort); + console.log('Sync requested by ' + socket.id); + console.log(' from timestamp '+ts); var rooms = socket.rooms; if (rooms.length !== 2) { socket.emit('insight-error', 'Must subscribe with public key before syncing'); @@ -33,11 +34,12 @@ module.exports.init = function(io_ext, config) { } var to = rooms[1]; var upper_ts = Math.round(microtime.now()); + console.log(' to timestamp '+upper_ts); mdb.getMessages(to, ts, upper_ts, function(err, messages) { if (err) { throw new Error('Couldn\'t get messages on sync request: ' + err); } - console.log('\tFound '+messages.length+' message'+(messages.length !== 1?'s':'')); + console.log('\tFound ' + messages.length + ' message' + (messages.length !== 1 ? 's' : '')); for (var i = 0; i < messages.length; i++) { broadcastMessage(messages[i], socket); } @@ -46,13 +48,19 @@ module.exports.init = function(io_ext, config) { // when it sends a message, add it to db socket.on('message', function(m) { - console.log('Message sent from ' + m.pubkey +' to '+m.to); + console.log('Message sent from ' + m.pubkey + ' to ' + m.to); mdb.addMessage(m, function(err) { if (err) { throw new Error('Couldn\'t add message to database: ' + err); } }); }); + + + // disconnect handler + socket.on('disconnect', function() { + console.log('disconnected ' + socket.id); + }); } }); if (enableMessageBroker) @@ -107,6 +115,7 @@ module.exports.broadcastSyncInfo = function(historicSync) { var broadcastMessage = module.exports.broadcastMessage = function(message, socket) { if (ios) { var s = socket || ios.sockets.in(message.to); + console.log('sending message to ' + message.to); s.emit('message', message); } diff --git a/examples/node-client.js b/examples/node-client.js new file mode 100644 index 00000000..57d57352 --- /dev/null +++ b/examples/node-client.js @@ -0,0 +1,34 @@ +var io = require('socket.io-client'); + +var bitcore = require('bitcore'); +var util = bitcore.util; +var Key = bitcore.Key; +var AuthMessage = bitcore.AuthMessage; +var Buffer = bitcore.Buffer; + +var socket = io.connect('http://localhost:3001', { + reconnection: false +}); + +var pk = Key.generateSync(); +var pubkey = pk.public.toString('hex'); +socket.emit('subscribe', pubkey); +socket.emit('sync'); + + + +socket.on('connect', function() { + console.log('connected as ' + pubkey); +}); + +socket.on('message', function(m) { + var data = AuthMessage.decode(pk, m); + console.log('message received ' + data.payload); + var echo = AuthMessage.encode(m.pubkey, pk, data.payload); + socket.emit('message', echo); +}); + + +socket.on('error', function(err) { + console.log(err); +}); diff --git a/lib/PeerSync.js b/lib/PeerSync.js index 49c995a9..d3e8d7c5 100644 --- a/lib/PeerSync.js +++ b/lib/PeerSync.js @@ -23,8 +23,13 @@ function PeerSync(opts) { this.peerman = new PeerManager(pmConfig); this.load_peers(); this.sync = new Sync(opts); + this.verbose = opts.verbose || false; } +PeerSync.prototype.log = function() { + if (this.verbose) console.log(arguments); +}; + PeerSync.prototype.load_peers = function() { this.peerdb = [{ ipv4: config.bitcoind.p2pHost, @@ -59,12 +64,12 @@ PeerSync.prototype._broadcastAddr = function(txid, addrs) { PeerSync.prototype.handleTx = function(info) { var self =this; var tx = this.sync.txDb.getStandardizedTx(info.message.tx); - console.log('[p2p_sync] Handle tx: ' + tx.txid); + self.log('[p2p_sync] Handle tx: ' + tx.txid); tx.time = tx.time || Math.round(new Date().getTime() / 1000); this.sync.storeTx(tx, function(err, relatedAddrs) { if (err) { - console.log('[p2p_sync] Error in handle TX: ' + JSON.stringify(err)); + self.log('[p2p_sync] Error in handle TX: ' + JSON.stringify(err)); } else if (self.shouldBroadcast) { sockets.broadcastTx(tx); @@ -78,7 +83,7 @@ PeerSync.prototype.handleBlock = function(info) { var self = this; var block = info.message.block; var blockHash = bitcoreUtil.formatHashFull(block.calcHash()); - console.log('[p2p_sync] Handle block: %s (allowReorgs: %s)', blockHash, self.allowReorgs); + self.log('[p2p_sync] Handle block: %s (allowReorgs: %s)', blockHash, self.allowReorgs); var tx_hashes = block.txs.map(function(tx) { return bitcoreUtil.formatHashFull(tx.hash); @@ -90,13 +95,13 @@ PeerSync.prototype.handleBlock = function(info) { 'previousblockhash': bitcoreUtil.formatHashFull(block.prev_hash), }, self.allowReorgs, function(err, height) { if (err && err.message.match(/NEED_SYNC/) && self.historicSync) { - console.log('[p2p_sync] Orphan block received. Triggering sync'); + self.log('[p2p_sync] Orphan block received. Triggering sync'); self.historicSync.start({forceRPC:1}, function(){ - console.log('[p2p_sync] Done resync.'); + self.log('[p2p_sync] Done resync.'); }); } else if (err) { - console.log('[p2p_sync] Error in handle Block: ', err); + self.log('[p2p_sync] Error in handle Block: ', err); } else { if (self.shouldBroadcast) { @@ -111,7 +116,7 @@ PeerSync.prototype.handleBlock = function(info) { PeerSync.prototype.handleConnected = function(data) { var peerman = data.pm; var peers_n = peerman.peers.length; - console.log('[p2p_sync] Connected to ' + peers_n + ' peer' + (peers_n !== 1 ? 's' : '')); + this.log('[p2p_sync] Connected to ' + peers_n + ' peer' + (peers_n !== 1 ? 's' : '')); }; PeerSync.prototype.run = function() { diff --git a/package.json b/package.json index ee78d2f1..52893590 100644 --- a/package.json +++ b/package.json @@ -66,10 +66,11 @@ "preconditions": "^1.0.7", "should": "~2.1.1", "sinon": "~1.7.3", - "socket.io": "~1.0.4", "soop": "=0.1.5", "winston": "*", - "xmlhttprequest": "~1.6.0" + "xmlhttprequest": "~1.6.0", + "socket.io": "1.0.6", + "socket.io-client": "1.0.6" }, "devDependencies": { "chai": "*", From 4451c120db97170d48d940db7a44eca1801e6e63 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Wed, 20 Aug 2014 10:54:51 -0400 Subject: [PATCH 4/4] remove logs --- app/controllers/socket.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/app/controllers/socket.js b/app/controllers/socket.js index aea8056b..9220cf2e 100644 --- a/app/controllers/socket.js +++ b/app/controllers/socket.js @@ -7,17 +7,24 @@ var mdb = require('../../lib/MessageDb').default(); var microtime = require('microtime'); var enableMessageBroker; +var verbose = false; +var log = function() { + if (verbose) { + console.log(arguments); + } +} + module.exports.init = function(io_ext, config) { enableMessageBroker = config ? config.enableMessageBroker : false; ios = io_ext; if (ios) { // when a new socket connects ios.sockets.on('connection', function(socket) { - console.log('New connection from ' + socket.id); + log('New connection from ' + socket.id); // when it subscribes, make it join the according room socket.on('subscribe', function(topic) { if (socket.rooms.length === 1) { - console.log('subscribe to ' + topic); + log('subscribe to ' + topic); socket.join(topic); } }); @@ -25,8 +32,8 @@ module.exports.init = function(io_ext, config) { if (enableMessageBroker) { // when it requests sync, send him all pending messages socket.on('sync', function(ts) { - console.log('Sync requested by ' + socket.id); - console.log(' from timestamp '+ts); + log('Sync requested by ' + socket.id); + log(' from timestamp '+ts); var rooms = socket.rooms; if (rooms.length !== 2) { socket.emit('insight-error', 'Must subscribe with public key before syncing'); @@ -34,12 +41,12 @@ module.exports.init = function(io_ext, config) { } var to = rooms[1]; var upper_ts = Math.round(microtime.now()); - console.log(' to timestamp '+upper_ts); + log(' to timestamp '+upper_ts); mdb.getMessages(to, ts, upper_ts, function(err, messages) { if (err) { throw new Error('Couldn\'t get messages on sync request: ' + err); } - console.log('\tFound ' + messages.length + ' message' + (messages.length !== 1 ? 's' : '')); + log('\tFound ' + messages.length + ' message' + (messages.length !== 1 ? 's' : '')); for (var i = 0; i < messages.length; i++) { broadcastMessage(messages[i], socket); } @@ -48,7 +55,7 @@ module.exports.init = function(io_ext, config) { // when it sends a message, add it to db socket.on('message', function(m) { - console.log('Message sent from ' + m.pubkey + ' to ' + m.to); + log('Message sent from ' + m.pubkey + ' to ' + m.to); mdb.addMessage(m, function(err) { if (err) { throw new Error('Couldn\'t add message to database: ' + err); @@ -59,7 +66,7 @@ module.exports.init = function(io_ext, config) { // disconnect handler socket.on('disconnect', function() { - console.log('disconnected ' + socket.id); + log('disconnected ' + socket.id); }); } }); @@ -115,7 +122,7 @@ module.exports.broadcastSyncInfo = function(historicSync) { var broadcastMessage = module.exports.broadcastMessage = function(message, socket) { if (ios) { var s = socket || ios.sockets.in(message.to); - console.log('sending message to ' + message.to); + log('sending message to ' + message.to); s.emit('message', message); }