mirror of
https://github.com/fluencelabs/js-libp2p-websockets
synced 2025-04-25 17:32:18 +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",
|
||||
"multiaddr": "^6.0.3",
|
||||
"pull-goodbye": "0.0.2",
|
||||
"pull-stream": "^3.6.7"
|
||||
"pull-stream": "^3.6.9"
|
||||
},
|
||||
"contributors": [
|
||||
"Chris Campbell <christopher.d.campbell@gmail.com>",
|
||||
|
@ -3,6 +3,8 @@
|
||||
const { Connection } = require('interface-connection')
|
||||
const withIs = require('class-is')
|
||||
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 noop = () => {}
|
||||
|
||||
@ -33,13 +35,19 @@ class WebSocketsAdapter extends WebSockets {
|
||||
|
||||
callback = callback || noop
|
||||
|
||||
const socket = super.dial(ma, options)
|
||||
const conn = new Connection(toPull.duplex(socket))
|
||||
const conn = new Connection()
|
||||
|
||||
conn.getObservedAddrs = callbackify(socket.getObservedAddrs.bind(socket))
|
||||
conn.close = callbackify(socket.close.bind(socket))
|
||||
|
||||
socket.connected().then(callback).catch(callback)
|
||||
super.dial(ma, options)
|
||||
.then(socket => {
|
||||
conn.setInnerConn(toPull.duplex(socket))
|
||||
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
|
||||
}
|
||||
|
@ -9,9 +9,10 @@ const log = require('debug')('libp2p:websockets:transport')
|
||||
const createListener = require('./listener')
|
||||
|
||||
class WebSockets {
|
||||
dial (ma, options) {
|
||||
async dial (ma, options) {
|
||||
log('dialing %s', ma)
|
||||
const socket = connect(toUri(ma), { binary: true })
|
||||
await socket.connected()
|
||||
socket.getObservedAddrs = () => [ma]
|
||||
log('connected %s', ma)
|
||||
return socket
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
const multiaddr = require('multiaddr')
|
||||
const os = require('os')
|
||||
|
||||
const createServer = require('it-ws/server')
|
||||
|
||||
module.exports = (options, handler) => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user