1.1.5 • Published 3 years ago

znode v1.1.5

Weekly downloads
180
License
Apache-2.0
Repository
github
Last release
3 years ago

znode

Build Status dependencies Status

semantic-release Commitizen friendly JavaScript Style Guide

znode is a remote method execution library for Node.js and the browser.

  • Bi-directional RPC over any stream (WebRTC, WebSockets, TCP, etc)
  • Supports binary types natively without serializing to strings. 1
  • Simple API using async await.
  • Supports RPC methods returning additional RPC methods.

1 Underlying implementation uses msgpack5. Performance is optimized for binary type usage (JSON would be faster for cases other than binary types).

Full Usage

const RPC = {
  /* basic method support */
  ping: () => 'pong',
  /* async methods work identicaly to sync methods */
  ping2: async () => 'pong2',
  /* supports binary types */
  pingBuffer: () => Buffer.from('pong'),
  /* you can also add static properties */
  API: 'v1'
}

net.createServer(async socket => {
  let remote = await znode(socket, RPC)

  let concater = await remote.createConcat('pre-')
  console.log(await concater.concat('post')) // priv-pre-post
})
.listen(async () => {

  const dynamicRPC = {
    createConcat: str => {
      let _private = 'priv-'
      return {concat: _str => _private + str + _str}
    }
  }

  let socket = net.connect(port)
  let remote = await znode(socket, dynamicRPC)
  console.log(await remote.ping()) // pong
  console.log(await remote.ping2()) // pong2
  console.log(await remote.pingBuffer()) // <Buffer 70 6f 6e 67>
  console.log(remote.API) // v1
})

RPC methods can return anything that can be serialized by msgpack5. RPC methods can also return objects with additional methods that will be turned into additional remote methods.

1.2.0

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago