# libp2p-webrtc-star

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

Latest version **0.25.0** (published 2021-12-02) · (Apache-2.0 OR MIT) license · 0 weekly downloads

## Install

```sh
npm install libp2p-webrtc-star
pnpm add libp2p-webrtc-star
yarn add libp2p-webrtc-star
bun add libp2p-webrtc-star
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.25.0 |
| Published | 2021-12-02 |
| First published | 2016-05-22 |
| Weekly downloads | 0 |
| License | (Apache-2.0 OR MIT) |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 14 |
| Unpacked size | 479.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 314 |
| Maintainers | jacobheun, daviddias, achingbrain, pgte, vascosantos |
| Keywords | IPFS, libp2p |

## Links

- npm: https://www.npmjs.com/package/libp2p-webrtc-star
- Repository: https://github.com/libp2p/js-libp2p-webrtc-star
- Homepage: https://github.com/libp2p/js-libp2p-webrtc-star/tree/master/packages/transport#readme
- Issues: https://github.com/libp2p/js-libp2p-webrtc-star/issues
- npm.io page: https://npm.io/package/libp2p-webrtc-star

## Dependencies (14)

- [debug](https://npm.io/package/debug.md) ^4.2.0
- [mafmt](https://npm.io/package/mafmt.md) ^10.0.0
- [it-pipe](https://npm.io/package/it-pipe.md) ^1.1.0
- [p-defer](https://npm.io/package/p-defer.md) ^3.0.0
- [peer-id](https://npm.io/package/peer-id.md) ^0.16.0
- [class-is](https://npm.io/package/class-is.md) ^1.1.0
- [err-code](https://npm.io/package/err-code.md) ^3.0.1
- [multiaddr](https://npm.io/package/multiaddr.md) ^10.0.0
- [ipfs-utils](https://npm.io/package/ipfs-utils.md) ^9.0.1
- [libp2p-utils](https://npm.io/package/libp2p-utils.md) ^0.4.0
- [stream-to-it](https://npm.io/package/stream-to-it.md) ^0.2.2
- [socket.io-client](https://npm.io/package/socket.io-client.md) ^4.1.2
- [abortable-iterator](https://npm.io/package/abortable-iterator.md) ^3.0.0
- [libp2p-webrtc-peer](https://npm.io/package/libp2p-webrtc-peer.md) ^10.0.1

## Recent versions

- 0.25.0 (latest) — 2021-12-02
- 0.21.0 (beta) — 2021-01-25
- 0.24.1 — 2021-11-30
- 0.24.0 — 2021-09-28
- 0.23.0 — 2021-07-07
- 0.22.4 — 2021-06-16
- 0.22.3 — 2021-05-04
- 0.22.2 — 2021-04-23
- 0.22.1 — 2021-04-22
- 0.22.0 — 2021-04-13
- 0.21.2 — 2021-02-24
- 0.21.1 — 2021-02-10
- 0.20.8 — 2021-01-25
- 0.20.7 — 2021-01-25
- 0.20.6 — 2020-12-29
- … 82 more at https://npm.io/package/libp2p-webrtc-star/versions

## README

# js-libp2p-webrtc-star <!-- omit in toc -->

[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) [![](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/) [![](https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23libp2p) [![Discourse posts](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg)](https://discuss.libp2p.io) [![](https://img.shields.io/codecov/c/github/libp2p/js-libp2p-webrtc-star.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-webrtc-star) [![](https://img.shields.io/travis/libp2p/js-libp2p-webrtc-star.svg?style=flat-square)](https://travis-ci.com/libp2p/js-libp2p-webrtc-star) [![Dependency Status](https://david-dm.org/libp2p/js-libp2p-webrtc-star.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-webrtc-star) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)

[![](https://github.com/libp2p/js-libp2p-interfaces/raw/master/src/transport/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport) [![](https://github.com/libp2p/js-libp2p-interfaces/raw/master/src/connection/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection) [![](https://github.com/libp2p/js-libp2p-interfaces/raw/master/src/peer-discovery/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/peer-discovery)

> libp2p WebRTC transport

## Table of Contents <!-- omit in toc -->

- [Description](#description)
- [Install](#install)
- [Usage](#usage)
  - [Using this module in Node.js (read: not in the browser)](#using-this-module-in-nodejs-read-not-in-the-browser)
  - [Using this module in the Browser](#using-this-module-in-the-browser)
- [Signalling server](#signalling-server)
- [API](#api)
  - [Transport](#transport)
  - [Connection](#connection)
  - [Peer Discovery - `ws.discovery`](#peer-discovery---wsdiscovery)

## Description

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

## Install

```bash
> 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](http://npmjs.org/wrtc) and [electron-webrtc](https://www.npmjs.com/package/electron-webrtc).

Instead of just creating the WebRTCStar instance without arguments, you need to pass an options object with the WebRTC implementation:

```JavaScript
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

```JavaScript
const WStar = require('libp2p-webrtc-star')
const multiaddr = require('multiaddr')
const all = require('it-all')

const addr = multiaddr('/ip4/188.166.203.82/tcp/20000/wss/p2p-webrtc-star/p2p/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 all(socket)

console.log(`Value: ${values.toString()}`)

// Close connection after reading
await listener.close()
```

## 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](https://npmjs.com/package/libp2p-webrtc-star-signalling-server) module for more information.

## API

### Transport

[![](https://github.com/libp2p/js-libp2p-interfaces/raw/master/src/transport/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport)

### Connection

[![](https://github.com/libp2p/js-libp2p-interfaces/raw/master/src/connection/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection)

### Peer Discovery - `ws.discovery`

[![](https://github.com/libp2p/js-libp2p-interfaces/raw/master/src/peer-discovery/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/peer-discovery)

---
_Source: https://npm.io/package/libp2p-webrtc-star · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
