diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..80d73a1 --- /dev/null +++ b/src/index.js @@ -0,0 +1,46 @@ +var tcp = require('net') +var async = require('async') + +exports = module.exports + +exports.dial = function (peerInfo, callback) { + var socket + async.eachSeries(peerInfo.multiaddrs, function (multiaddr, next) { + if (!multiaddr.protoNames().indexOf('tcp')) { + return next() + } + + if (socket) { + return next() + } + + var tmp = tcp.connect(multiaddr.toOptions(), function connected () { + socket = tmp + next() + }) + + tmp.once('error', function (err) { + console.log(multiaddr.toString(), 'on', + peerInfo.id.toB58String(), 'not available', err) + next() + }) + }, function done () { + if (!socket) { + return callback(new Error('Not able to open a scoket with peer - ', + peerInfo.id.toB58String())) + } + callback(null, socket) + }) +} + +exports.listen = function (options, callback, readyCallback) { + options.port = options.port || 4001 + + var listener = tcp.createServer(function (socket) { + callback(null, socket) + }) + + listener.listen(options.port, readyCallback) + + return listener +}