diff --git a/package.json b/package.json index 2b7e6d8b9b..e5b6a8eeae 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "libp2p-secio": "~0.11.0", "libp2p-tcp": "~0.13.0", "libp2p-webrtc-star": "~0.15.5", - "libp2p-websocket-star": "~0.10.0", + "libp2p-websocket-star-multi": "~0.4.0", "libp2p-websockets": "~0.12.0", "lodash": "^4.17.11", "mafmt": "^6.0.2", diff --git a/src/core/runtime/libp2p-browser.js b/src/core/runtime/libp2p-browser.js index fec12fa9a3..2a14416f93 100644 --- a/src/core/runtime/libp2p-browser.js +++ b/src/core/runtime/libp2p-browser.js @@ -2,17 +2,23 @@ const WS = require('libp2p-websockets') const WebRTCStar = require('libp2p-webrtc-star') -const WebSocketStar = require('libp2p-websocket-star') +const WebSocketStarMulti = require('libp2p-websocket-star-multi') const Multiplex = require('libp2p-mplex') const SECIO = require('libp2p-secio') const Bootstrap = require('libp2p-bootstrap') const libp2p = require('libp2p') const defaultsDeep = require('@nodeutils/defaults-deep') +const multiaddr = require('multiaddr') class Node extends libp2p { constructor (_options) { const wrtcstar = new WebRTCStar({ id: _options.peerInfo.id }) - const wsstar = new WebSocketStar({ id: _options.peerInfo.id }) + + // this can be replaced once optional listening is supported with the below code. ref: https://github.com/libp2p/interface-transport/issues/41 + // const wsstar = new WebSocketStar({ id: _options.peerInfo.id }) + const wsstarServers = _options.peerInfo.multiaddrs.toArray().map(String).filter(addr => addr.includes('p2p-websocket-star')) + _options.peerInfo.multiaddrs.replace(wsstarServers.map(multiaddr), '/p2p-websocket-star') // the ws-star-multi module will replace this with the chosen ws-star servers + const wsstar = new WebSocketStarMulti({ servers: wsstarServers, id: _options.peerInfo.id, ignore_no_online: !wsstarServers.length || _options.wsStarIgnoreErrors }) const defaults = { modules: { diff --git a/src/core/runtime/libp2p-nodejs.js b/src/core/runtime/libp2p-nodejs.js index 1b59c435c7..df50ec984d 100644 --- a/src/core/runtime/libp2p-nodejs.js +++ b/src/core/runtime/libp2p-nodejs.js @@ -3,17 +3,22 @@ const TCP = require('libp2p-tcp') const MulticastDNS = require('libp2p-mdns') const WS = require('libp2p-websockets') -const WebSocketStar = require('libp2p-websocket-star') +const WebSocketStarMulti = require('libp2p-websocket-star-multi') const Bootstrap = require('libp2p-bootstrap') const KadDHT = require('libp2p-kad-dht') const Multiplex = require('libp2p-mplex') const SECIO = require('libp2p-secio') const libp2p = require('libp2p') const defaultsDeep = require('@nodeutils/defaults-deep') +const multiaddr = require('multiaddr') class Node extends libp2p { constructor (_options) { - const wsstar = new WebSocketStar({ id: _options.peerInfo.id }) + // this can be replaced once optional listening is supported with the below code. ref: https://github.com/libp2p/interface-transport/issues/41 + // const wsstar = new WebSocketStar({ id: _options.peerInfo.id }) + const wsstarServers = _options.peerInfo.multiaddrs.toArray().map(String).filter(addr => addr.includes('p2p-websocket-star')) + _options.peerInfo.multiaddrs.replace(wsstarServers.map(multiaddr), '/p2p-websocket-star') // the ws-star-multi module will replace this with the chosen ws-star servers + const wsstar = new WebSocketStarMulti({ servers: wsstarServers, id: _options.peerInfo.id, ignore_no_online: !wsstarServers.length || _options.wsStarIgnoreErrors }) const defaults = { modules: {