Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

dht-universal

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dht-universal

Universal wrapper for @hyperswarm/dht and @hyperswarm/dht-relay working in Node.js and the Browser

  • 0.4.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

dht-universal

Universal wrapper for @hyperswarm/dht and @hyperswarm/dht-relay working in Node.js and the Browser

Installation

npm install dht-universal

Usage

In browser, it will use the @hyperswarm/dht-relay with a WebSocket transport, so you need to pass a relay URL to the constructor, and wait for it to be ready to confirm the websocket is open.

Drop-in replacement initialization

import { DHT } from 'dht-universal';
const node = new DHT({ relay: 'wss://dht-relay.example.com/' });
await node.ready();

Async initialization

You can also use the static async function create to try multiple relays until one works.

import { DHT } from 'dht-universal';

const node = await DHT.create({
  relays: ['wss://dht-relay.example.com/'],
  ...opts,
});
// No need to call `await node.ready()`

Relay in Node environment

If you want to use the relay in Node, you can import it explicitly:

import { DHT } from 'dht-universal/relay.js';

const node = await DHT.create({
  relays: ['wss://dht-relay.example.com/'],
  ...opts,
});

API

Should be the same as @hyperswarm/dht.

API test coverage:

The goal of this module is to ensure the usability of the DHT in the browser within the common use cases namely Hyperswarm and replicating Hypercores through Corestore:

import Corestore from 'corestore';
import Hyperswarm from 'hyperswarm';
import ram from 'random-access-memory';
import DHT from 'dht-universal';

(async () => {
  const dht = new DHT({ relay: 'wss://dht-relay.example.com/' });
  const swarm = new Hyperswarm({ dht });
  const store = new Corestore(ram);
  await store.ready();

  swarm.on('connection', (socket) => {
    store.replicate(socket);
  });

  const core = store.get({ key: <0x012...def>});
  await core.ready();

  swarm.join(core.discoveryKey, { server: true, client: true });
  await swarm.flush();

  await core.update();
  const block = await core.get(core.length - 1);
})();

Other unit tests are available but might be removed later.

Setup Relay

This module exposes a helper function to easily run a relay server.

import { setupRelay } from 'dht-universal/setup-relay.js';

const { port, closeRelay } = await setupRelay({ dhtOpts, wsServerOptions });

Keywords

FAQs

Package last updated on 30 Mar 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc