From 5bc07658ebdbd57e3c95708821b76355e64f12f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Sat, 22 Dec 2018 12:49:52 +0100 Subject: [PATCH 1/5] feat: use ws-star-multi instead of ws-star --- package.json | 1 + src/core/runtime/libp2p-browser.js | 8 ++++++-- src/core/runtime/libp2p-nodejs.js | 7 +++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2b7e6d8b9b..bb3a8a76b9 100644 --- a/package.json +++ b/package.json @@ -140,6 +140,7 @@ "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..802d137521 100644 --- a/src/core/runtime/libp2p-browser.js +++ b/src/core/runtime/libp2p-browser.js @@ -2,17 +2,21 @@ 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 }) + + const wsstarServers = _options.peerInfo.multiaddrs.toArray().map(String).filter(addr => ~addr.indexOf('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..8fcbda742c 100644 --- a/src/core/runtime/libp2p-nodejs.js +++ b/src/core/runtime/libp2p-nodejs.js @@ -3,17 +3,20 @@ 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 }) + const wsstarServers = _options.peerInfo.multiaddrs.toArray().map(String).filter(addr => ~addr.indexOf('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: { From 691283d25b3048f97d3f003f0cc488f317b99dcd Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Fri, 18 Jan 2019 16:55:53 +0100 Subject: [PATCH 2/5] refactor: use sane .indexOf check Co-Authored-By: mkg20001 --- src/core/runtime/libp2p-browser.js | 2 +- src/core/runtime/libp2p-nodejs.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/runtime/libp2p-browser.js b/src/core/runtime/libp2p-browser.js index 802d137521..0f9a418d2e 100644 --- a/src/core/runtime/libp2p-browser.js +++ b/src/core/runtime/libp2p-browser.js @@ -14,7 +14,7 @@ class Node extends libp2p { constructor (_options) { const wrtcstar = new WebRTCStar({ id: _options.peerInfo.id }) - const wsstarServers = _options.peerInfo.multiaddrs.toArray().map(String).filter(addr => ~addr.indexOf('p2p-websocket-star')) + 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 }) diff --git a/src/core/runtime/libp2p-nodejs.js b/src/core/runtime/libp2p-nodejs.js index 8fcbda742c..782040e087 100644 --- a/src/core/runtime/libp2p-nodejs.js +++ b/src/core/runtime/libp2p-nodejs.js @@ -14,7 +14,7 @@ const multiaddr = require('multiaddr') class Node extends libp2p { constructor (_options) { - const wsstarServers = _options.peerInfo.multiaddrs.toArray().map(String).filter(addr => ~addr.indexOf('p2p-websocket-star')) + 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 }) From 197872872ed68dd9e0276078df9c393405c2dc7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Fri, 18 Jan 2019 16:56:35 +0100 Subject: [PATCH 3/5] fix: use ~ for pre-v1 deps --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bb3a8a76b9..80ba94cc2c 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "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-websocket-star-multi": "~0.4.0", "libp2p-websockets": "~0.12.0", "lodash": "^4.17.11", "mafmt": "^6.0.2", From ff672fd8e5e9a05e759fc9f5a16933ce38fde2f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Mon, 21 Jan 2019 13:21:38 +0100 Subject: [PATCH 4/5] chore: remove ws-star dep --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 80ba94cc2c..e5b6a8eeae 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,6 @@ "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", From 63c4897d05f08a68c5713a8d659f23998096d9aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Mon, 21 Jan 2019 13:35:19 +0100 Subject: [PATCH 5/5] misc: add comment about optional listening --- src/core/runtime/libp2p-browser.js | 2 ++ src/core/runtime/libp2p-nodejs.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/core/runtime/libp2p-browser.js b/src/core/runtime/libp2p-browser.js index 0f9a418d2e..2a14416f93 100644 --- a/src/core/runtime/libp2p-browser.js +++ b/src/core/runtime/libp2p-browser.js @@ -14,6 +14,8 @@ class Node extends libp2p { constructor (_options) { const wrtcstar = new WebRTCStar({ 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 }) diff --git a/src/core/runtime/libp2p-nodejs.js b/src/core/runtime/libp2p-nodejs.js index 782040e087..df50ec984d 100644 --- a/src/core/runtime/libp2p-nodejs.js +++ b/src/core/runtime/libp2p-nodejs.js @@ -14,6 +14,8 @@ const multiaddr = require('multiaddr') class Node extends libp2p { constructor (_options) { + // 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 })