Nameless Package Manager

    @coryfoundation/translink

    1.3.7 • Public • Published

    translink GitHub Repo stars

    A high-level API for connecting nodes together using P2P and DHT without using message brokers, queues and intermediate servers.

    All messages are encrypted with end-to-end encryption (more: https://hypercore-protocol.org)

    Installation

    npm install @coryfoundation/translink
    
    import Translink from '@coryfoundation/translink'
    
    const bridge = new Translink(options)
    
    // Subscriptions here
    
    bridge.connect()
      .then(() => console.log('Connected'))
      .catch((e) => console.error('Connection error', e))

    Options

    namespace (string)

    Namespace for recognition on the network. Must be the same on all nodes.

    • Required: true

    nodeID (string)

    Node identifier. Must be unique.

    • Required: false
    • Default: random string

    log (boolean)

    Determines whether to write module messages to the console.

    • Required: false
    • Default: true

    logger (console-like class)

    Allows you to set your console-like class for logging.

    • Required: false
    • Default: console

    encoding (string)

    The encoding that should be used to encode and decode messages. utf8 is currently supported only.

    • Required: false
    • Default: utf8

    requestTimeout (number)

    Timeout for the request, after which Error will be thrown on the sender's side. In milliseconds.

    • Required: false
    • Default: 10000

    heartbeatInterval (number)

    The interval after which the heartbeat will be sent to other nodes.

    • Required: false
    • Default: 5000

    heartbeatTimeout (number)

    Timeout, after which the node will be removed from the list of available nodes.

    • Required: false
    • Default: 10000

    maxClientConnections (number)

    Maximum client connections to be allowed.

    • Required: false
    • Default: Infinity

    maxServerConnections (number)

    Maximum server connections to be allowed.

    • Required: false
    • Default: Infinity

    maxPeers (number)

    Maximum peers to be allowed.

    • Required: false
    • Default: Infinity

    maxParallel (number)

    Maximum parallel connections to be allowed.

    • Required: false
    • Default: Infinity

    broadcastReqConcurrency (number)

    Request concurrency for broadcastReq() method

    • Required: false
    • Default: 5

    broadcastReqTimeout (number)

    Request timeout for broadcastReq() method

    • Required: false
    • Default: 1000

    waitForPeer (boolean)

    Do we need to wait for the connection of the peer

    • Required: false
    • Default: true

    Usage

    Request

    Subscribe

    bridge.subscribeReq('my.request', async (data) => {
      // Something to do with data
      return { hello: 'world' }
    })

    Send

    bridge.get('my.request', { something: 'data' })
    .then((response) => {
      // Something to do with response
    }).catch((error) => {
      console.error('Error', error)
    })

    Event

    Subscribe

    bridge.subscribe('my.event', async (data) => {
      // Something to do with data
    })

    Send

    bridge.emit('my.event', { world: 'hello' })

    Broadcast

    Request

    No all node responses needed
    bridge.broadcastReq('my.request', { world: 'hello' })
    .then((results) => {
      // results is array with all responses
    }).catch((error) => {
      console.error('Error', error)
    })

    Event

    With same event subscription
    bridge.broadcast('my.event', { world: 'hello' })
    All nodes
    bridge.broadcastToAllNodes('my.event', { world: 'hello' })

    Replic nodes

    You can duplicate nodes with the same subscriptions an infinite number of times. Translink will send a message to a random available suitable node.

    License

    MIT

    Install

    npm i @coryfoundation/translink

    DownloadsWeekly Downloads

    1

    Version

    1.3.7

    License

    MIT

    Unpacked Size

    41.1 kB

    Total Files

    8

    Last publish

    Collaborators

    • srngmw