Skip to content
This repository has been archived by the owner on Feb 26, 2021. It is now read-only.

libp2p-webrtc-star without webrtc. Just plain socket.io.

Notifications You must be signed in to change notification settings

libp2p/js-libp2p-websocket-star

Repository files navigation

⛔️ DEPRECATED

libp2p-websocket-star is not supported anymore from [email protected].
👉 If you are looking for a drop-in replacement, use libp2p-webrtc-star instead.
Check js-libp2p/doc/CONFIGURATION.md for what other modules are currently supported.

This library will not be maintained.


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

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