grenache-nodejs-link-simple

0.1.2 • Public • Published

grenache-nodejs-link-simple

In Grenache, grenache-nodejs-link-simple communicates with the DHT.

Changes compared to regular link

This repo takes the original grenache-nodejs-link and

  • removes the need to run start().
  • Removes the need to run stop() in case no announcements have been made.

This simplified the api because lookups can now be done directly without any setup/shutdown methods.

Install with:

npm i grenache-nodejs-link-simple

Requirements

Install Grenache Grape: https://github.com/bitfinexcom/grenache-grape:

npm i -g grenache-grape
// Start 2 Grapes
grape --dp 20001 --aph 30001 --bn '127.0.0.1:20002'
grape --dp 20002 --aph 40001 --bn '127.0.0.1:20001'

Class: Link

new Link(options)

  • options <Object> Options for the link
    • grape <String> Address of the Grenache Grape instance. Communication is done via WebSocket or HTTP.
    • requestTimeout <Number> Default timeout for requests to Grape,
    • pingTimeout <Number> Ping connection timeout to Grape (triggers reconnect attempt),
    • lruMaxSizeLookup <Number> Maximum size of the cache, checked by applying the length function to all values in the cache
    • lruMaxAgeLookup <Number> Maximum cache age in ms.

link.start() is deprecated.

link.stop()

Stops all current announces. Doesn't need to be called if no announce has been made.

link.announce(name)

  • name <String> Name of the service, used to find the service from other peers

Used to announce a service, e.g. a RPC Server.

link.startAnnouncing(name, port, [opts])

Keep announcing a service every ~2min (default) or specify interval in opts.interval

link.stopAnnouncing(name, port)

Stop announcing a service

link.put(data, callback)

  • data
    • v: <String> value to store
  • callback <function>

Puts a value into the DHT. Example.

link.putMutable(data, opts, callback)

  • data
    • v: <String> value to store
    • s: <Number> sequence number
  • opts
    • keys: <Object> contains ed25519-supercop private and public key
      • publicKey: <Buffer> public key
      • secretKey: <Buffer> private key
  • callback <function>

Provides sugar for storing mutable, signed data in the DHT.

Example raw put
Example with putMutable

link.get(hash | object, callback)

  • hash <String> Hash used for lookup

  • object <Object>

    • hash: <String> Hash used for lookup
    • salt: <String> (optional) salt that was used if data was stored with salt. Required in those cases.
  • callback <function>

Retrieves a stored value from the DHT via a hash <String>. It also supports an object, which is used to pass a previously used salt in order to retrieve the data teh salt was used upon.

Callback returns err <Object> and data <Object>.

Example.

link.lookup(name, [opts], callback)

  • name <String> Name of the service to lookup
  • opts
    • retry: <Number> retry count
  • callback <function>

Retrieves the ports and IPs of a given service name.

Package Sidebar

Install

npm i grenache-nodejs-link-simple

Weekly Downloads

102

Version

0.1.2

License

Apache-2.0

Unpacked Size

43.5 kB

Total Files

15

Last publish

Collaborators

  • sebubu