Merge pull request #284 from waku-org/chore/only-wss-peers

chore: only show websocket peers in discovery
This commit is contained in:
Danish Arora 2023-11-03 16:59:38 +05:30 committed by GitHub
commit 0e2c6d56fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 8 deletions

View File

@ -3,11 +3,12 @@
"$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json", "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json",
"language": "en", "language": "en",
"words": [ "words": [
"Alives",
"asym", "asym",
"backoff", "backoff",
"backoffs", "backoffs",
"bitjson",
"bitauth", "bitauth",
"bitjson",
"bufbuild", "bufbuild",
"chainsafe", "chainsafe",
"cimg", "cimg",
@ -16,6 +17,7 @@
"codecov", "codecov",
"commitlint", "commitlint",
"dependabot", "dependabot",
"Dialable",
"dingpu", "dingpu",
"Dlazy", "Dlazy",
"dnsaddr", "dnsaddr",
@ -52,13 +54,13 @@
"lightpush", "lightpush",
"livechat", "livechat",
"mkdir", "mkdir",
"mplex",
"multiaddr", "multiaddr",
"multiaddresses", "multiaddresses",
"multiaddrs", "multiaddrs",
"multicodec", "multicodec",
"multicodecs", "multicodecs",
"multiformats", "multiformats",
"mplex",
"multihashes", "multihashes",
"muxed", "muxed",
"muxer", "muxer",
@ -100,13 +102,12 @@
"varint", "varint",
"waku", "waku",
"wakuconnect", "wakuconnect",
"wakuv",
"wakunode", "wakunode",
"wakuv",
"webfonts", "webfonts",
"websockets", "websockets",
"wifi", "wifi",
"xsalsa20", "xsalsa20"
"Alives"
], ],
"flagWords": [], "flagWords": [],
"ignorePaths": [ "ignorePaths": [

View File

@ -81,8 +81,12 @@ export const useNodePeers = (node: undefined | LightNode) => {
useEffect(() => { useEffect(() => {
if (!node) return; if (!node) return;
const handleDiscoveryBootstrap = (event: CustomEvent<PeerId>) => { const handleDiscoveryBootstrap = async (event: CustomEvent<PeerId>) => {
setBootstrapPeers((peers) => new Set([...peers, event.detail])); (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>) => { const handleConnectBootstrap = (event: CustomEvent<PeerId>) => {
@ -90,7 +94,11 @@ export const useNodePeers = (node: undefined | LightNode) => {
}; };
const handleDiscoveryPeerExchange = (event: CustomEvent<PeerId>) => { 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>) => { const handleConnectPeerExchange = (event: CustomEvent<PeerId>) => {
@ -210,3 +218,20 @@ export const usePeers = (params: UsePeersParams): UsePeersResults => {
return peers; 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");
};