libp2p WebRTC transport that includes a discovery mechanism provided by the signalling-star
$ npm i @libp2p/webrtc-star
Loading this module through a script tag will make it's exports available as Libp2pWebrtcStar
in the global namespace.
<script src="https://unpkg.com/@libp2p/webrtc-star/dist/index.min.js"></script>
libp2p-webrtc-star
is one of the WebRTC transports available for libp2p.
To use this module in Node.js, you have to BYOI of WebRTC, there are multiple options out there, unfortunately, none of them are 100% solid. The ones we recommend are: wrtc and electron-webrtc.
Instead of just creating the WebRTCStar instance without arguments, you need to pass an options object with the WebRTC implementation:
import { createLibp2pNode } from 'libp2p'
import { webRTCStar } from '@libp2p/webrtc-star'
import wrtc from 'wrtc'
import electronWebRTC from 'electron-webrtc'
// Using wrtc in node
const star = webRTCStar({ wrtc })
// Using electron-webrtc in electron
const star = webRTCStar({ wrtc: electronWebRTC() })
const node = await createLibp2pNode({
addresses: {
listen: [
'/ip4/188.166.203.82/tcp/20000/wss/p2p-webrtc-star'
]
},
transports: [
star.transport
],
peerDiscovery: [
star.discovery
]
})
await node.start()
await node.dial('/ip4/188.166.203.82/tcp/20000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a')
import { createLibp2pNode } from 'libp2p'
import { webRTCStar } from '@libp2p/webrtc-star'
const star = webRTCStar()
const node = await createLibp2pNode({
addresses: {
listen: [
'/ip4/188.166.203.82/tcp/20000/wss/p2p-webrtc-star'
]
},
transports: [
star.transport
],
peerDiscovery: [
star.discovery
]
})
await node.start()
await node.dial('/ip4/188.166.203.82/tcp/20000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a')
This module has an accompanying signalling server which is used to discover other peers running the libp2p-webrtc-star transport.
Please see the libp2p-webrtc-star-signalling-server module for more information.
Licensed under either of
- Apache 2.0, (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
- MIT (LICENSE-MIT / http://opensource.org/licenses/MIT)
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.