mirror of
https://github.com/fluencelabs/js-libp2p-tcp
synced 2025-05-11 19:17:32 +00:00
47 lines
1.0 KiB
JavaScript
47 lines
1.0 KiB
JavaScript
|
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
|
||
|
}
|