eth-libp2p-websocket-star

0.0.1 • Public • Published

libp2p-websocket-star

Discourse posts Dependency Status js-standard-style

libp2p-webrtc-star without webrtc. Just WebSockets with a relay point in the middle.

Lead Maintainer

Jacob Heun

Description

libp2p-websocket-star is one of the multiple transports available for libp2p. libp2p-websocket-star incorporates both a transport and a discovery service that is facilitated by the rendezvous server, also available in this repo and module.

Usage

Example

TODO

Install

> npm install libp2p-websocket-star

API

Transport

Connection

Peer Discovery - ws.discovery

Example

const libp2p = require("libp2p")
const Id = require("peer-id")
const Info = require("peer-info")
const multiaddr = require("multiaddr")
const pull = require('pull-stream')
 
const WSStar = require('libp2p-websocket-star')
 
Id.create((err, id) => {
  if (err) throw err
 
  const peerInfo = new Info(id)
  peerInfo.multiaddrs.add(multiaddr("/dns4/ws-star-signal-1.servep2p.com/tcp/443/wss/p2p-websocket-star/"))
 
  // TODO -> review why the ID can not be passed by the .listen call
  const ws = new WSStar({ id: id }) // the id is required for the crypto challenge
 
  const modules = {
    transport: [
      ws
    ],
    discovery: [
      ws.discovery
    ]
  }
 
  const node = new libp2p(modules, peerInfo)
 
  node.handle("/test/1.0.0", (protocol, conn) => {
    pull(
      pull.values(['hello']),
      conn,
      pull.map((s) => s.toString()),
      pull.log()
    )
  })
 
  node.start((err) => {
    if (err) {
      throw err
    }
 
    node.dial(peerInfo, "/test/1.0.0", (err, conn) => {
      if (err) {
        throw err
      }
 
      pull(
        pull.values(['hello from the other side']),
        conn,
        pull.map((s) => s.toString()),
        pull.log()
      )
    })
  })
})

Outputs:

hello
hello from the other side

Rendezvous server

Usage

To reduce dependencies libp2p-websocket-star comes without the rendezvous server, that means that you need to install libp2p-websocket-star-rendezvous to start a rendezvous server. To do that, first install the module globally in your machine with:

> npm install --global libp2p-websocket-star-rendezvous

This will install a rendezvous CLI tool. Now you can spawn the server with:

> rendezvous --port=9090 --host=127.0.0.1

Defaults:

  • port - 13579
  • host - '0.0.0.0'

Hosted Rendezvous server

We host a rendezvous server at /dns4/ws-star.discovery.libp2p.io that can be used for practical demos and experimentation, it should not be used for apps in production.

A libp2p-websocket-star address, using the signalling server we provide, looks like:

/dns4/ws-star.discovery.libp2p.io/tcp/443/wss/p2p-websocket-star/ipfs/<your-peer-id>

Note: The address above indicates WebSockets Secure, which can be accessed from both http and https.

LICENSE MIT

Package Sidebar

Install

npm i eth-libp2p-websocket-star

Weekly Downloads

2

Version

0.0.1

License

MIT

Unpacked Size

31.4 kB

Total Files

7

Last publish

Collaborators

  • d1ll0n