Skip to content

geut/swarm-hooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@geut/swarm-hooks

JavaScript Style Guide standard-readme compliant

Made by GEUT

Discovery Swarm WebRTC hooks for react.

Table of Contents

Install

$ npm install @geut/swarm-hooks @geut/discovery-swarm-webrtc

or

$ yarn add @geut/swarm-hooks @geut/discovery-swarm-webrtc

Usage

// ./App.js

import React from 'react'

import { SwarmProvider, Swarm } from '@geut/swarm-hooks'

import Peers from './components/Peers'

function App () {
  return (
    <SwarmProvider>
      <Swarm id='cool-swarm' config={{ bootstrap: ['wss://geut-webrtc-signal-v3.herokuapp.com'] }}>
        <Peers />
      </Swarm>
    </SwarmProvider>
  )
}

export default App
// ./components/Peers.js

import React, { useEffect } from 'react'
import crypto from 'crypto'

import { useJoin } from '@geut/swarm-hooks'

const someTopic = crypto.createHash('sha256')
    .update('some-topic')
    .digest()

function Peers () {
  const { peers, useSubscription } = useJoin({ id: 'cool-swarm', topic: someTopic })

  useSubscription('connection', (connection, info) => {
    console.log('New peer!', connection, info)
  })

  useSubscription('connection-closed', (connection, info) => {
    console.log('Peer disconnected', connection, info)
  })

  return (
    <div>
      <h1>Peers</h1>
      <ul>
        {peers.map(peer => <li>{peer.id.toString('hex')}</li>)}
      </ul>
    </div>
  )
}

export default Peers

Api

SwarmProvider

Keeps reference to multiple swarms based on his config.

children

ReactElement | required

React children.

Swarm

Creates and provides an instance of discoverySwarmWebrtc.

id

string | defaults to 'default'

Identifies your swarm for access it later with useSwarm.

config

object

Object containing options as defined in swarm creation

children

ReactElement | required

React children.

useSwarm(options)

Hook to get the swarm instance defined by id

options

object | required

options.id

string | defaults to 'default'

Identifies a <Swarm /> previously created. default will be selected if no present.

Returns an object with:

swarm

discoverySwarmWebrtc instance.

peers

array

Array of connected peers. See getPeers

useSubscription

useHypercoreProtocol

(conn, info) => HypercoreProtocol

useJoin(options)

Hook to join into a particular topic

options

object | required

options.topic

Buffer | required

Topic to join.

options.id

string | defaults to 'default'

Identifies a <Swarm /> previously created. default will be selected if no present.

Returns an object with:

swarm

DiscoverySwarmWebrtc

discoverySwarmWebrtc instance.

peers

array

Array of connected peers. See getPeers

useSubscription

useHypercoreProtocol

(conn, info) => HypercoreProtocol

Issues

🐛 If you found an issue we encourage you to report it on github. Please specify your OS and the actions to reproduce it.

Contributing

đŸ‘„ Ideas and contributions to the project are welcome. You must follow this guideline.

License

MIT © A GEUT project