libp2p-webrtc-star without webrtc. Just plain socket.io.
Clone or download
Permalink
Failed to load latest commit information.
ci Updating CI files Nov 23, 2017
src feat: add tag Jun 14, 2018
test fix: fix tests and upgrade deps Feb 12, 2018
.aegir.js feat: allowJoinWithDisabledChallenge Nov 27, 2017
.gitignore chore: move CRYPTO.md out of docs so that aegir does not delete it Nov 30, 2017
.jshintrc
.travis.yml
CHANGELOG.md chore: release version v0.8.1 Jun 19, 2018
CRYPTO_PUZZLE.md
PROTOCOL.md docs: Add protocol (#45) Mar 19, 2018
README.md chore: update lead maintainer Jun 26, 2018
appveyor.yml Updating CI files Nov 23, 2017
circle.yml Updating CI files Nov 23, 2017
package.json chore: update lead maintainer Jun 26, 2018

README.md

libp2p-websocket-star

Travis Circle Coverage david-dm

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