Package Exports
- @coryfoundation/translink
- @coryfoundation/translink/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@coryfoundation/translink) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
translink 
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/translinkimport 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