From d00c1c874aa54e075b10befd9a4dcec592416dd9 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Fri, 9 Jul 2021 14:23:42 +1000 Subject: [PATCH] Do not fail if connection to one peer fails As long as we connect to at least one peer then we can move forward. --- examples/eth-dm/src/waku.ts | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/examples/eth-dm/src/waku.ts b/examples/eth-dm/src/waku.ts index 900d8002bf..59454da0ed 100644 --- a/examples/eth-dm/src/waku.ts +++ b/examples/eth-dm/src/waku.ts @@ -1,5 +1,5 @@ import { Dispatch, SetStateAction } from 'react'; -import { Environment, getStatusFleetNodes, Waku, WakuMessage } from 'js-waku'; +import { getStatusFleetNodes, Waku, WakuMessage } from 'js-waku'; import { decode, DirectMessage, PublicKeyMessage } from './messaging/wire'; import { decryptMessage, validatePublicKeyMessage } from './crypto'; import { Message } from './messaging/Messages'; @@ -11,20 +11,27 @@ export const DirectMessageContentTopic = '/eth-dm/1/direct-message/json'; export async function initWaku(): Promise { const waku = await Waku.create({}); - const nodes = await getNodes(); - await Promise.all( - nodes.map((addr) => { - return waku.dial(addr); - }) - ); + // Dial all nodes it can find + getStatusFleetNodes().then((nodes) => { + nodes.forEach((addr) => { + waku.dial(addr); + }); + }); + + // Wait to be connected to at least one peer + await new Promise((resolve, reject) => { + // If we are not connected to any peer within 10sec let's just reject + // As we are not implementing connection management in this example + + setTimeout(reject, 10000); + waku.libp2p.connectionManager.on('peer:connect', () => { + resolve(null); + }); + }); return waku; } -function getNodes() { - return getStatusFleetNodes(Environment.Prod); -} - export function handlePublicKeyMessage( myAddress: string, setter: Dispatch>>,