diff --git a/package.json b/package.json index 8ac0853..b4eb8dc 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ }, "homepage": "https://github.com/diasdavid/js-libp2p-websockets#readme", "dependencies": { + "lodash.contains": "^2.4.3", "mafmt": "^2.1.0", "multiaddr": "^2.0.2", "run-parallel": "^1.1.6", @@ -52,4 +53,4 @@ "Francisco Baio Dias ", "Friedel Ziegelmayer " ] -} \ No newline at end of file +} diff --git a/src/index.js b/src/index.js index 228f138..c808cf5 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ const log = debug('libp2p:websockets') const SWS = require('simple-websocket') const mafmt = require('mafmt') const parallel = require('run-parallel') +const contains = require('lodash.contains') exports = module.exports = WebSockets @@ -44,6 +45,10 @@ function WebSockets () { var count = 0 multiaddrs.forEach((m) => { + if (contains(m.protoNames(), 'ipfs')) { + m = m.decapsulate('ipfs') + } + const listener = SWS.createServer((conn) => { conn.getObservedAddrs = () => { return [] // TODO think if it makes sense for WebSockets @@ -72,7 +77,13 @@ function WebSockets () { } this.filter = (multiaddrs) => { + if (!Array.isArray(multiaddrs)) { + multiaddrs = [multiaddrs] + } return multiaddrs.filter((ma) => { + if (contains(ma.protoNames(), 'ipfs')) { + ma = ma.decapsulate('ipfs') + } return mafmt.WebSockets.matches(ma) }) }