js-libp2p-tcp/src/index.js

47 lines
1.0 KiB
JavaScript
Raw Normal View History

2015-09-15 19:08:19 +01:00
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
}