mirror of
https://github.com/fluencelabs/js-libp2p-websockets
synced 2025-04-25 14:22:30 +00:00
refactor: async dial that resolves on connection open
License: MIT Signed-off-by: Alan Shaw <alan.shaw@protocol.ai>
This commit is contained in:
parent
4321b7e89a
commit
616fac9d21
@ -55,7 +55,7 @@
|
|||||||
"interface-transport": "~0.3.6",
|
"interface-transport": "~0.3.6",
|
||||||
"multiaddr": "^6.0.3",
|
"multiaddr": "^6.0.3",
|
||||||
"pull-goodbye": "0.0.2",
|
"pull-goodbye": "0.0.2",
|
||||||
"pull-stream": "^3.6.7"
|
"pull-stream": "^3.6.9"
|
||||||
},
|
},
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"Chris Campbell <christopher.d.campbell@gmail.com>",
|
"Chris Campbell <christopher.d.campbell@gmail.com>",
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
const { Connection } = require('interface-connection')
|
const { Connection } = require('interface-connection')
|
||||||
const withIs = require('class-is')
|
const withIs = require('class-is')
|
||||||
const toPull = require('async-iterator-to-pull-stream')
|
const toPull = require('async-iterator-to-pull-stream')
|
||||||
|
const error = require('pull-stream/sources/error')
|
||||||
|
const drain = require('pull-stream/sinks/drain')
|
||||||
const WebSockets = require('./')
|
const WebSockets = require('./')
|
||||||
const noop = () => {}
|
const noop = () => {}
|
||||||
|
|
||||||
@ -33,13 +35,19 @@ class WebSocketsAdapter extends WebSockets {
|
|||||||
|
|
||||||
callback = callback || noop
|
callback = callback || noop
|
||||||
|
|
||||||
const socket = super.dial(ma, options)
|
const conn = new Connection()
|
||||||
const conn = new Connection(toPull.duplex(socket))
|
|
||||||
|
|
||||||
conn.getObservedAddrs = callbackify(socket.getObservedAddrs.bind(socket))
|
super.dial(ma, options)
|
||||||
conn.close = callbackify(socket.close.bind(socket))
|
.then(socket => {
|
||||||
|
conn.setInnerConn(toPull.duplex(socket))
|
||||||
socket.connected().then(callback).catch(callback)
|
conn.getObservedAddrs = callbackify(socket.getObservedAddrs.bind(socket))
|
||||||
|
conn.close = callbackify(socket.close.bind(socket))
|
||||||
|
callback(null, conn)
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
conn.setInnerConn({ sink: drain(), source: error(err) })
|
||||||
|
callback(err)
|
||||||
|
})
|
||||||
|
|
||||||
return conn
|
return conn
|
||||||
}
|
}
|
||||||
|
@ -9,9 +9,10 @@ const log = require('debug')('libp2p:websockets:transport')
|
|||||||
const createListener = require('./listener')
|
const createListener = require('./listener')
|
||||||
|
|
||||||
class WebSockets {
|
class WebSockets {
|
||||||
dial (ma, options) {
|
async dial (ma, options) {
|
||||||
log('dialing %s', ma)
|
log('dialing %s', ma)
|
||||||
const socket = connect(toUri(ma), { binary: true })
|
const socket = connect(toUri(ma), { binary: true })
|
||||||
|
await socket.connected()
|
||||||
socket.getObservedAddrs = () => [ma]
|
socket.getObservedAddrs = () => [ma]
|
||||||
log('connected %s', ma)
|
log('connected %s', ma)
|
||||||
return socket
|
return socket
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
const multiaddr = require('multiaddr')
|
const multiaddr = require('multiaddr')
|
||||||
const os = require('os')
|
const os = require('os')
|
||||||
|
|
||||||
const createServer = require('it-ws/server')
|
const createServer = require('it-ws/server')
|
||||||
|
|
||||||
module.exports = (options, handler) => {
|
module.exports = (options, handler) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user