diff --git a/src/listener.js b/src/listener.js index bb27c34..c559a41 100644 --- a/src/listener.js +++ b/src/listener.js @@ -29,6 +29,12 @@ class Listener extends EventEmitter { this.__connections = new Map() } + /** + * Closes all open servers + * @param {object} options + * @param {number} options.timeout how long before closure is forced, defaults to 2000 ms + * @returns {Promise} + */ close (options = {}) { if ([...this._servers].filter(server => server.listening).length === 0) { return @@ -65,6 +71,11 @@ class Listener extends EventEmitter { }) } + /** + * Creates servers listening on the given `addrs` + * @async + * @param {Array} addrs + */ async listen (addrs) { addrs = Array.isArray(addrs) ? addrs : [addrs] @@ -115,6 +126,10 @@ class Listener extends EventEmitter { }) } + /** + * Return the addresses we are listening on + * @returns {Array} + */ getAddrs () { const multiaddrs = [] this._servers.forEach(server => { diff --git a/test/listen-dial.spec.js b/test/listen-dial.spec.js index f05be66..71ae58c 100644 --- a/test/listen-dial.spec.js +++ b/test/listen-dial.spec.js @@ -183,7 +183,7 @@ describe('dial', () => { handled = resolve }) - const ma = multiaddr('/ip6/::/tcp/9067') + const ma = multiaddr('/ip6/::/tcp/0') const listener = tcp.createListener(async (conn) => { await pipe( @@ -194,7 +194,8 @@ describe('dial', () => { }) await listener.listen(ma) - await pipe(await tcp.dial(ma)) + const addrs = listener.getAddrs() + await pipe(await tcp.dial(addrs[0])) await handledPromise await listener.close() @@ -210,7 +211,7 @@ describe('dial', () => { handled = resolve }) - const ma = multiaddr('/ip6/::/tcp/9068') + const ma = multiaddr('/ip6/::/tcp/0') const listener = tcp.createListener(async (conn) => { // pull(conn, pull.onEnd(destroyed)) @@ -219,7 +220,8 @@ describe('dial', () => { }) await listener.listen(ma) - await pipe([], await tcp.dial(ma)) + const addrs = listener.getAddrs() + await pipe([], await tcp.dial(addrs[0])) await handledPromise await listener.close()