Skip to content

Commit

Permalink
Merge pull request #284 from waku-org/chore/only-wss-peers
Browse files Browse the repository at this point in the history
chore: only show websocket peers in discovery
  • Loading branch information
danisharora099 committed Nov 3, 2023
2 parents 2f455c1 + ca1c0ba commit 0e2c6d5
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 8 deletions.
11 changes: 6 additions & 5 deletions examples/web-chat/.cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
"$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json",
"language": "en",
"words": [
"Alives",
"asym",
"backoff",
"backoffs",
"bitjson",
"bitauth",
"bitjson",
"bufbuild",
"chainsafe",
"cimg",
Expand All @@ -16,6 +17,7 @@
"codecov",
"commitlint",
"dependabot",
"Dialable",
"dingpu",
"Dlazy",
"dnsaddr",
Expand Down Expand Up @@ -52,13 +54,13 @@
"lightpush",
"livechat",
"mkdir",
"mplex",
"multiaddr",
"multiaddresses",
"multiaddrs",
"multicodec",
"multicodecs",
"multiformats",
"mplex",
"multihashes",
"muxed",
"muxer",
Expand Down Expand Up @@ -100,13 +102,12 @@
"varint",
"waku",
"wakuconnect",
"wakuv",
"wakunode",
"wakuv",
"webfonts",
"websockets",
"wifi",
"xsalsa20",
"Alives"
"xsalsa20"
],
"flagWords": [],
"ignorePaths": [
Expand Down
31 changes: 28 additions & 3 deletions examples/web-chat/src/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,16 +81,24 @@ export const useNodePeers = (node: undefined | LightNode) => {
useEffect(() => {
if (!node) return;

const handleDiscoveryBootstrap = (event: CustomEvent<PeerId>) => {
setBootstrapPeers((peers) => new Set([...peers, event.detail]));
const handleDiscoveryBootstrap = async (event: CustomEvent<PeerId>) => {
(async () => {
if (!(await isPeerDialable(event.detail, node))) return;

setBootstrapPeers((peers) => new Set([...peers, event.detail]));
})().catch((error) => console.error(error));
};

const handleConnectBootstrap = (event: CustomEvent<PeerId>) => {
setConnectedBootstrapPeers((peers) => new Set([...peers, event.detail]));
};

const handleDiscoveryPeerExchange = (event: CustomEvent<PeerId>) => {
setPeerExchangePeers((peers) => new Set([...peers, event.detail]));
(async () => {
if (!(await isPeerDialable(event.detail, node))) return;

setPeerExchangePeers((peers) => new Set([...peers, event.detail]));
})().catch((error) => console.error(error));
};

const handleConnectPeerExchange = (event: CustomEvent<PeerId>) => {
Expand Down Expand Up @@ -210,3 +218,20 @@ export const usePeers = (params: UsePeersParams): UsePeersResults => {

return peers;
};

// we only support websocket connections for now
const isPeerDialable = async (peerId: PeerId, node: LightNode) => {
const peer = await node.libp2p.peerStore.get(peerId);
if (!peer) return false;
if (peer.addresses.length === 0) return false;
const connectableMultiaddrs = peer.addresses.filter(({ multiaddr }) =>
isMultiaddrConnectable(multiaddr.toString())
);
if (connectableMultiaddrs.length === 0) return false;

return true;
};

const isMultiaddrConnectable = (multiaddr: string) => {
return multiaddr.includes("wss") || multiaddr.includes("/tls/ws");
};

0 comments on commit 0e2c6d5

Please sign in to comment.