Package Exports
- libp2p-webrtc-star
- libp2p-webrtc-star/src/sig-server
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (libp2p-webrtc-star) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
js-libp2p-webrtc-star
libp2p WebRTC transport that includes a discovery mechanism provided by the signalling-star
Lead Maintainer
Description
libp2p-webrtc-star
is one of the WebRTC transports available for libp2p. libp2p-webrtc-star
incorporates both a transport and a discovery service that is facilitated by the signalling server, also part of this module.
Usage
Install
> npm install libp2p-webrtc-star
Usage
Using this module in Node.js (read: not in the browser)
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:
const wrtc = require('wrtc')
const electronWebRTC = require('electron-webrtc')
const WStar = require('libp2p-webrtc-star')
// Using wrtc
const ws1 = new WStar({ wrtc: wrtc })
// Using electron-webrtc
const ws2 = new WStar({ wrtc: electronWebRTC() })
Using this module in the Browser
const WStar = require('libp2p-webrtc-star')
const multiaddr = require('multiaddr')
const pipe = require('it-pipe')
const { collect } = require('streaming-iterables')
const addr = multiaddr('/ip4/188.166.203.82/tcp/20000/wss/p2p-webrtc-star/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a')
const ws = new WStar({ upgrader })
const listener = ws.createListener((socket) => {
console.log('new connection opened')
pipe(
['hello'],
socket
)
})
await listener.listen(addr)
console.log('listening')
const socket = await ws.dial(addr)
const values = await pipe(
socket,
collect
)
console.log(`Value: ${values.toString()}`)
// Close connection after reading
await listener.close()
API
Transport
Connection
Peer Discovery - ws.discovery
Rendezvous server (aka Signalling server)
Nodes using libp2p-webrtc-star
will connect to a known point in the network, a rendezvous point where they can learn about other nodes (Discovery) and exchange their SDP offers (signalling data).
libp2p-webrtc-star
comes with its own signalling server, used for peers to handshake their signalling data and establish a connection. You can install it in your machine by installing the module globally:
> npm install --global libp2p-webrtc-star
This will expose a webrtc-star
cli tool. To spawn a server do:
> star-signal --port=9090 --host=127.0.0.1
Defaults:
port
- 13579host
- '0.0.0.0'
Hosted Rendezvous Server
We host a signalling server at star-signal.cloud.ipfs.team
that can be used for practical demos and experimentation, it should not be used for apps in production.
A libp2p-webrtc-star address, using the signalling server we provide, looks like:
/dns4/star-signal.cloud.ipfs.team/wss/p2p-webrtc-star/ipfs/<your-peer-id>
Note: The address above indicates WebSockets Secure, which can be accessed from both http and https.