From 3f6497634f511f6a4abc974fb200fe00d51f4f35 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Wed, 28 Jul 2021 12:37:05 +1000 Subject: [PATCH] Bootstrap --- examples/min-js-web-chat/src/App.js | 22 ++++++++++++++-------- guides/relay-receive-send-messages.md | 14 ++++++++++++++ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/examples/min-js-web-chat/src/App.js b/examples/min-js-web-chat/src/App.js index b2dd719f1d..ac40e87550 100644 --- a/examples/min-js-web-chat/src/App.js +++ b/examples/min-js-web-chat/src/App.js @@ -1,24 +1,25 @@ import './App.css'; -import { Waku } from 'js-waku'; +import { getStatusFleetNodes, Waku } from 'js-waku'; import * as React from 'react'; function App() { const [waku, setWaku] = React.useState(undefined); - const [wakuStarting, setWakuStarting] = React.useState(false); + const [wakuStatus, setWakuStatus] = React.useState('NotStarted'); React.useEffect(() => { if (!!waku) return; - if (wakuStarting) return; + if (wakuStatus !== 'NotStarted') return; - setWakuStarting(true); + setWakuStatus('Starting'); Waku.create().then((waku) => { setWaku(waku); - setWakuStarting(false); + setWakuStatus('Connecting'); + bootstrapWaku(waku).then(() => { + setWakuStatus('Ready'); + }); }); - }, [waku, wakuStarting]); - - const wakuStatus = !!waku ? 'Started' : wakuStarting ? 'Loading' : 'Error'; + }, [waku, wakuStatus]); return (
@@ -30,3 +31,8 @@ function App() { } export default App; + +async function bootstrapWaku(waku) { + const nodes = await getStatusFleetNodes(); + await Promise.all(nodes.map((addr) => waku.dial(addr))); +} diff --git a/guides/relay-receive-send-messages.md b/guides/relay-receive-send-messages.md index 17cda8e53e..5a1668d46e 100644 --- a/guides/relay-receive-send-messages.md +++ b/guides/relay-receive-send-messages.md @@ -25,3 +25,17 @@ import { Waku } from 'js-waku'; const wakuNode = await Waku.create(); ``` + +# Connect to other peers + +The Waku instance needs to connect to other peers to communicate with the network. +You are free to choose any method to bootstrap and DappConnect will ship with new methods in the future. + +For now, the easiest way is to connect to Status' Waku fleet: + +```js +import { getStatusFleetNodes } from 'js-waku'; + +const nodes = await getStatusFleetNodes(); +await Promise.all(nodes.map((addr) => waku.dial(addr))); +```