mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-03-30 22:31:03 +00:00
* feat: allow for configuring content and peer routing * feat: support multiple peer and content routing modules * docs: add delegated routing example
79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
// eslint-disable-next-line
|
|
'use strict'
|
|
|
|
const Libp2p = require('libp2p')
|
|
const Websockets = require('libp2p-websockets')
|
|
const WebSocketStar = require('libp2p-websocket-star')
|
|
const WebRTCStar = require('libp2p-webrtc-star')
|
|
const MPLEX = require('libp2p-mplex')
|
|
const SECIO = require('libp2p-secio')
|
|
const KadDHT = require('libp2p-kad-dht')
|
|
const DelegatedPeerRouter = require('libp2p-delegated-peer-routing')
|
|
const DelegatedContentRouter = require('libp2p-delegated-content-routing')
|
|
|
|
module.exports = ({peerInfo, peerBook}) => {
|
|
const wrtcstar = new WebRTCStar({id: peerInfo.id})
|
|
const wsstar = new WebSocketStar({id: peerInfo.id})
|
|
const delegatedApiOptions = {
|
|
host: '0.0.0.0',
|
|
protocol: 'http',
|
|
port: '8080'
|
|
}
|
|
|
|
return new Libp2p({
|
|
peerInfo,
|
|
peerBook,
|
|
// Lets limit the connection managers peers and have it check peer health less frequently
|
|
connectionManager: {
|
|
maxPeers: 10,
|
|
pollInterval: 5000
|
|
},
|
|
modules: {
|
|
contentRouting: [
|
|
new DelegatedContentRouter(peerInfo.id, delegatedApiOptions)
|
|
],
|
|
peerRouting: [
|
|
new DelegatedPeerRouter(delegatedApiOptions)
|
|
],
|
|
peerDiscovery: [
|
|
wrtcstar.discovery,
|
|
wsstar.discovery
|
|
],
|
|
transport: [
|
|
wrtcstar,
|
|
wsstar,
|
|
Websockets
|
|
],
|
|
streamMuxer: [
|
|
MPLEX
|
|
],
|
|
connEncryption: [
|
|
SECIO
|
|
],
|
|
dht: KadDHT
|
|
},
|
|
config: {
|
|
peerDiscovery: {
|
|
webrtcStar: {
|
|
enabled: false
|
|
},
|
|
websocketStar: {
|
|
enabled: false
|
|
}
|
|
},
|
|
dht: {
|
|
kBucketSize: 20
|
|
},
|
|
relay: {
|
|
enabled: true,
|
|
hop: {
|
|
enabled: false
|
|
}
|
|
},
|
|
EXPERIMENTAL: {
|
|
dht: false
|
|
}
|
|
}
|
|
})
|
|
}
|