Skip to content
This repository has been archived by the owner on Apr 24, 2023. It is now read-only.

Latest commit

 

History

History

webrtc-star-transport

@libp2p/webrtc-star

libp2p.io Discuss codecov CI

libp2p WebRTC transport that includes a discovery mechanism provided by the signalling-star

Table of contents

Install

$ npm i @libp2p/webrtc-star

Browser <script> tag

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>

Description

libp2p-webrtc-star is one of the WebRTC transports available for libp2p.

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:

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')

Using this module in the Browser

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')

Signalling server

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.

API

Transport

Connection

Peer Discovery - ws.discovery

License

Licensed under either of

Contribution

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.