-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathApp.js
89 lines (82 loc) · 2.57 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import './globals.js'
import { StatusBar } from 'expo-status-bar'
import { StyleSheet, Text, View } from 'react-native'
import { useState, useEffect } from 'react'
import { createLibp2p } from 'libp2p'
import { webSockets } from '@libp2p/websockets'
import { bootstrap } from '@libp2p/bootstrap'
import { noise } from '@chainsafe/libp2p-noise'
import { yamux } from '@chainsafe/libp2p-yamux'
import { identify } from '@libp2p/identify'
import { circuitRelayTransport } from '@libp2p/circuit-relay-v2'
import { tcp } from '@libp2p/tcp'
import { kadDHT } from '@libp2p/kad-dht'
import * as filters from '@libp2p/websockets/filters'
import debug from 'debug'
debug.enable('libp2p:*,*:trace')
export default function App () {
const [libp2p, setLibp2p] = useState(null)
const [peers, setPeers] = useState(null)
const [multiaddrs, setMultiaddrs] = useState(null)
useEffect(() => {
async function getLibp2p() {
const node = await createLibp2p({
addresses: {
listen: [
'/p2p-circuit'
]
},
transports: [
circuitRelayTransport(),
webSockets({
filter: filters.all
}),
tcp()
],
connectionEncrypters: [
noise()
],
streamMuxers: [
yamux()
],
peerDiscovery: [
bootstrap({
list: [
'/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',
'/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa',
'/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
'/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt'
]
})
],
services: {
identify: identify(),
kadDHT: kadDHT()
}
})
setInterval(() => {
setPeers(node?.getPeers())
setMultiaddrs(node?.getMultiaddrs())
}, 1000)
setLibp2p(node)
}
getLibp2p()
}, [])
return (
<View style={styles.container}>
<Text>js-libp2p running on React Native</Text>
<Text>Our PeerId is {libp2p?.peerId.toString()}</Text>
<Text>Peers {peers?.join(', ')}</Text>
<Text>Multiaddrs {multiaddrs?.join(', ')}</Text>
<StatusBar style="auto" />
</View>
)
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
}
})