Skip to content

Commit 1535540

Browse files
committed
fix: update webrtc API usage
Updates example to use the libp2p api shipped last year. Refs libp2p/docs#403
1 parent f145e62 commit 1535540

File tree

4 files changed

+31
-43
lines changed

4 files changed

+31
-43
lines changed

package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,26 @@
2323
}
2424
},
2525
"dependencies": {
26-
"@chainsafe/libp2p-gossipsub": "^13.1.0",
27-
"@chainsafe/libp2p-noise": "^15.1.0",
28-
"@chainsafe/libp2p-yamux": "^6.0.2",
26+
"@chainsafe/libp2p-gossipsub": "^14.1.1",
27+
"@chainsafe/libp2p-noise": "^16.1.4",
28+
"@chainsafe/libp2p-yamux": "^7.0.4",
2929
"@headlessui/react": "^2.0.3",
30-
"@libp2p/autonat": "^1.1.1",
31-
"@libp2p/bootstrap": "^10.1.1",
32-
"@libp2p/circuit-relay-v2": "^1.1.1",
33-
"@libp2p/identify": "^2.1.1",
30+
"@libp2p/autonat": "^2.0.37",
31+
"@libp2p/bootstrap": "^11.0.43",
32+
"@libp2p/circuit-relay-v2": "^3.2.20",
33+
"@libp2p/identify": "^3.0.37",
3434
"@libp2p/interface-pubsub": "^4.0.1",
35-
"@libp2p/logger": "^4.0.16",
35+
"@libp2p/logger": "^5.1.21",
3636
"@libp2p/peer-id-factory": "^4.2.0",
37-
"@libp2p/pubsub-peer-discovery": "^10.0.2",
38-
"@libp2p/tcp": "^9.1.1",
39-
"@libp2p/webrtc": "^4.1.1",
40-
"@libp2p/websockets": "^8.1.1",
41-
"@libp2p/webtransport": "^4.1.1",
37+
"@libp2p/pubsub-peer-discovery": "^11.0.2",
38+
"@libp2p/tcp": "^10.1.17",
39+
"@libp2p/webrtc": "^5.2.20",
40+
"@libp2p/websockets": "^9.2.17",
41+
"@libp2p/webtransport": "^5.0.47",
4242
"@multiformats/multiaddr": "^12.3.0",
4343
"@multiformats/multiaddr-matcher": "^1.2.4",
4444
"date-fns": "^3.6.0",
45-
"libp2p": "^1.8.0",
45+
"libp2p": "^2.8.12",
4646
"pretty-ms": "^9.0.0"
4747
}
4848
}

src/index.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,32 @@ import { multiaddr } from '@multiformats/multiaddr'
77
import { gossipsub } from '@chainsafe/libp2p-gossipsub'
88
import { webSockets } from '@libp2p/websockets'
99
import { webTransport } from '@libp2p/webtransport'
10-
import { webRTC, webRTCDirect } from '@libp2p/webrtc'
11-
import { circuitRelayTransport, circuitRelayServer } from '@libp2p/circuit-relay-v2'
10+
import { webRTC } from '@libp2p/webrtc'
1211
import { enable, disable } from '@libp2p/logger'
1312
import { pubsubPeerDiscovery } from '@libp2p/pubsub-peer-discovery'
1413
import { PUBSUB_PEER_DISCOVERY } from './constants'
1514
import { update, getPeerTypes, getAddresses, getPeerDetails } from './utils'
1615
import { bootstrap } from '@libp2p/bootstrap'
1716
import * as filters from '@libp2p/websockets/filters'
17+
import { circuitRelayTransport } from '@libp2p/circuit-relay-v2'
1818

1919
const App = async () => {
2020
const libp2p = await createLibp2p({
2121
// addresses: {
2222
// listen: [
23+
// // 👇 Required to create circuit relay reservations in order to hole punch browser-to-browser WebRTC connections
24+
// '/p2p-circuit',
2325
// // 👇 Listen for webRTC connection
2426
// '/webrtc',
2527
// ],
2628
// },
2729
transports: [
28-
webSockets({
29-
// Allow all WebSocket connections inclusing without TLS
30-
filter: filters.all,
31-
}),
30+
webSockets(),
3231
webTransport(),
3332
webRTC(),
34-
// // 👇 Required to create circuit relay reservations in order to hole punch browser-to-browser WebRTC connections
35-
// circuitRelayTransport({
36-
// discoverRelays: 1,
37-
// }),
33+
circuitRelayTransport(),
3834
],
39-
connectionEncryption: [noise()],
35+
connectionEncrypters: [noise()],
4036
streamMuxers: [yamux()],
4137
connectionGater: {
4238
// Allow private addresses for local testing

src/relay.js

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,9 @@ import { autoNAT } from '@libp2p/autonat'
44
import { identify } from '@libp2p/identify'
55
import { noise } from '@chainsafe/libp2p-noise'
66
import { yamux } from '@chainsafe/libp2p-yamux'
7-
import { multiaddr } from '@multiformats/multiaddr'
87
import { gossipsub } from '@chainsafe/libp2p-gossipsub'
98
import { webSockets } from '@libp2p/websockets'
10-
import { webRTC, webRTCDirect } from '@libp2p/webrtc'
119
import { tcp } from '@libp2p/tcp'
12-
import { enable, disable } from '@libp2p/logger'
13-
import { pubsubPeerDiscovery } from '@libp2p/pubsub-peer-discovery'
14-
// import { update, getPeerTypes, getAddresses, getPeerDetails } from './utils'
15-
import { bootstrap } from '@libp2p/bootstrap'
1610
import { circuitRelayServer } from '@libp2p/circuit-relay-v2'
1711
import { PUBSUB_PEER_DISCOVERY } from './constants.js'
1812

@@ -29,12 +23,8 @@ async function main() {
2923
webSockets(),
3024
tcp(),
3125
],
32-
connectionEncryption: [noise()],
26+
connectionEncrypters: [noise()],
3327
streamMuxers: [yamux()],
34-
connectionGater: {
35-
// Allow private addresses for local testing
36-
denyDialMultiaddr: async () => false,
37-
},
3828
services: {
3929
identify: identify(),
4030
autoNat: autoNAT(),

src/utils.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { WebRTC, WebSockets, WebSocketsSecure, WebTransport, Circuit } from '@multiformats/multiaddr-matcher'
2-
import { protocols } from '@multiformats/multiaddr'
3-
import { bootstrapPeers } from './constants'
1+
import { WebRTC, WebSockets, WebSocketsSecure, WebTransport, Circuit, WebRTCDirect } from '@multiformats/multiaddr-matcher'
2+
import { bootstrapPeers } from './constants.js'
43

54
export function getAddresses(libp2p) {
65
return libp2p
@@ -14,6 +13,7 @@ export function getPeerTypes(libp2p) {
1413
const types = {
1514
'Circuit Relay': 0,
1615
WebRTC: 0,
16+
'WebRTC Direct': 0,
1717
WebSockets: 0,
1818
'WebSockets (secure)': 0,
1919
WebTransport: 0,
@@ -24,8 +24,10 @@ export function getPeerTypes(libp2p) {
2424
.getConnections()
2525
.map((conn) => conn.remoteAddr)
2626
.forEach((ma) => {
27-
if (WebRTC.exactMatch(ma) || ma.toString().includes('/webrtc/')) {
27+
if (WebRTC.exactMatch(ma)) {
2828
types['WebRTC']++
29+
} else if (WebRTCDirect.exactMatch(ma)) {
30+
types['WebRTC Direct']++
2931
} else if (WebSockets.exactMatch(ma)) {
3032
types['WebSockets']++
3133
} else if (WebSocketsSecure.exactMatch(ma)) {
@@ -60,9 +62,9 @@ export function getPeerDetails(libp2p) {
6062
const relayMultiaddrs = libp2p.getMultiaddrs().filter((ma) => Circuit.exactMatch(ma))
6163
const relayPeers = relayMultiaddrs.map((ma) => {
6264
return ma
63-
.stringTuples()
64-
.filter(([name, _]) => name === protocols('p2p').code)
65-
.map(([_, value]) => value)[0]
65+
.getComponents()
66+
.filter(({ name }) => name === 'p2p')
67+
.map(({ value }) => value)
6668
})
6769

6870
// detect if this is a relay we have a reservation on

0 commit comments

Comments
 (0)