Skip to content

Commit

Permalink
local relay server with websocket
Browse files Browse the repository at this point in the history
  • Loading branch information
silkroadnomad committed Mar 10, 2024
1 parent ba5f82c commit e8c7362
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 37 deletions.
2 changes: 0 additions & 2 deletions src/lib/components/OnBoarding.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@
requestAddress($did)
requested = true
}
}
$:{
if($myAddressBook.length>0){ //if a record arrives in my address book show it on the page //TODO go to ContactList (would be better)
scannedContact = $myAddressBook?.filter((it) => { return it.owner === $did })
Expand Down
70 changes: 35 additions & 35 deletions src/relay.js
Original file line number Diff line number Diff line change
@@ -1,56 +1,56 @@
/* eslint-disable no-console */

import { noise } from '@chainsafe/libp2p-noise'
import { yamux } from '@chainsafe/libp2p-yamux'
import { createLibp2p } from 'libp2p'
import {circuitRelayTransport, circuitRelayServer} from '@libp2p/circuit-relay-v2'
import { noise } from '@chainsafe/libp2p-noise'
import { circuitRelayServer } from '@libp2p/circuit-relay-v2'
import { webSockets } from '@libp2p/websockets'
import * as filters from '@libp2p/websockets/filters'
import { identify } from '@libp2p/identify'
import { pubsubPeerDiscovery } from "@libp2p/pubsub-peer-discovery";
import { autoNAT } from '@libp2p/autonat'
import {dcutr} from "@libp2p/dcutr";
import {gossipsub} from "@chainsafe/libp2p-gossipsub";
import {FaultTolerance} from "@libp2p/interface-transport";
import {kadDHT} from "@libp2p/kad-dht";
import { createFromPrivKey } from '@libp2p/peer-id-factory'
import { unmarshalPrivateKey } from '@libp2p/crypto/keys'
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'

const topics = [
'dcontact._peer - discovery._p2p._pubsub' // It's recommended but not required to extend the global space
// '_peer-discovery._p2p._pubsub' // Include if you want to participate in the global space
];
// output of: console.log(server.peerId.privateKey.toString('hex'))
const relayPrivKey = '08011240821cb6bc3d4547fcccb513e82e4d718089f8a166b23ffcd4a436754b6b0774cf07447d1693cd10ce11ef950d7517bad6e9472b41a927cd17fc3fb23f8c70cd99'
// the peer id of the above key
// const relayId = '12D3KooWAJjbRkp8FPF5MKgMU53aUTxWkqvDrs4zc1VMbwRwfsbE'

// const reservationStore = new ReservationStore({ maxReservations: 100 })
const encoded = uint8ArrayFromString(relayPrivKey, 'hex')
const privateKey = await unmarshalPrivateKey(encoded)
const peerId = await createFromPrivKey(privateKey)

const server = await createLibp2p({
peerId,
addresses: {
listen: ['/ip4/127.0.0.1/tcp/12313/ws']
listen: ['/ip4/0.0.0.0/tcp/12345/ws']
},
transports: [
circuitRelayTransport(),
webSockets({
filter: filters.all
})
],
connectionEncryption: [noise()],
streamMuxers: [yamux()],
peerDiscovery: [
// bootstrap(bootstrapConfig),
pubsubPeerDiscovery({
interval: 10000,
topics: topics, // defaults to ['_peer-discovery._p2p._pubsub']
listenOnly: false
})
],
services: {
identify: identify(),
autoNAT: autoNAT(),
dcutr: dcutr(),
pubsub: gossipsub({ allowPublishToZeroPeers: true, canRelayMessage: true }),
circuitRelay: circuitRelayServer({
reservations: { applyDefaultLimit: false, maxReservations: Infinity }
relay: circuitRelayServer({
reservations: {
maxReservations: 5000,
reservationTtl: 1000,
defaultDataLimit: BigInt(1024 * 1024 * 1024)
}
})
}
});
})

server.addEventListener('peer:connect', async event => {
console.log('peer:connect', event.detail)
})

server.addEventListener('peer:disconnect', async event => {
console.log('peer:disconnect', event.detail)
server.peerStore.delete(event.detail)
})

console.log(
'Relay listening on multiaddr(s): ',
server.getMultiaddrs().map((ma) => ma.toString())
);
console.log(server.peerId.toString())
console.log('p2p addr: ', server.getMultiaddrs().map((ma) => ma.toString()))
// generates a deterministic address: /ip4/127.0.0.1/tcp/33519/ws/p2p/12D3KooWAJjbRkp8FPF5MKgMU53aUTxWkqvDrs4zc1VMbwRwfsbE

0 comments on commit e8c7362

Please sign in to comment.