diff --git a/packages/peer-exchange/src/waku_peer_exchange_discovery.ts b/packages/peer-exchange/src/waku_peer_exchange_discovery.ts index ea3135d570..e8322d49c0 100644 --- a/packages/peer-exchange/src/waku_peer_exchange_discovery.ts +++ b/packages/peer-exchange/src/waku_peer_exchange_discovery.ts @@ -1,4 +1,4 @@ -import type { PeerUpdate } from "@libp2p/interface-libp2p"; +import type { IdentifyResult } from "@libp2p/interface-libp2p"; import type { PeerDiscovery, PeerDiscoveryEvents, @@ -61,11 +61,10 @@ export class PeerExchangeDiscovery private queryAttempts: Map = new Map(); private readonly handleDiscoveredPeer = ( - event: CustomEvent, + event: CustomEvent, ): void => { - const { - peer: { protocols, id: peerId }, - } = event.detail; + const { protocols, peerId } = event.detail; + if ( !protocols.includes(PeerExchangeCodec) || this.queryingPeers.has(peerId.toString()) @@ -98,7 +97,7 @@ export class PeerExchangeDiscovery // might be better to use "peer:identify" or "peer:update" this.components.events.addEventListener( - "peer:update", + "peer:identify", this.handleDiscoveredPeer, ); } @@ -112,7 +111,7 @@ export class PeerExchangeDiscovery this.isStarted = false; this.queryingPeers.clear(); this.components.events.removeEventListener( - "peer:update", + "peer:identify", this.handleDiscoveredPeer, ); } diff --git a/packages/tests/tests/peer_exchange.node.spec.ts b/packages/tests/tests/peer_exchange.node.spec.ts index 2af495470e..7ea9d520ea 100644 --- a/packages/tests/tests/peer_exchange.node.spec.ts +++ b/packages/tests/tests/peer_exchange.node.spec.ts @@ -117,7 +117,11 @@ describe("Peer Exchange", () => { await waku.start(); const nwaku2Ma = await nwaku2.getMultiaddrWithId(); - await waku.libp2p.dialProtocol(nwaku2Ma, PeerExchangeCodec); + + // we do this because we want peer-exchange discovery to get initialised before we dial the peer which contains info about the other peer + setTimeout(() => { + void waku.libp2p.dialProtocol(nwaku2Ma, PeerExchangeCodec); + }, 1000); return new PeerExchangeDiscovery(waku.libp2p.components); },