zara

zara is an rpc lib zara

Usage

install

1
2
3
npm install zara --save
// ...or
yarn add zara

server

In Sandbox class, it will save env object when a client connect, different connection with
different env. env will contain userId in default, which is connection id. when disconnect
sandbox will destory automatically.

Then you shou pass ws listen port and Sandbox to Server function to start rpc. default port
is 3189

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import { Server } from 'zara'
class Sandbox {
private env = null
constructor (env, ws) {
this.env = env
}
async foo (p1, p2) {
const res = await new Promise((resolve) => {
setTimeout(function () {
resolve(`${p1} ${p2}`)
}, 1000)
})
return res
}
}
Server(3189, Sandbox)

Client

You should pass url to Client function, default url is ws://localhost:3189.
you can invoke server function esaily though call function which is Client
class instance object.

Attention: in call function you must use template string. and the only way
to pass params is use ${}

1
2
call`(fun hello world)` // wrong
call`(fun ${'hello'} ${'world'})` //correct
1
2
3
4
5
6
7
8
9
10
11
12
13
import Client from 'zara/dist/client'
const url = 'ws://localhost:3189'
const { call } = Client(url)
(async () => {
const p1 = 'hello'
const p2 = 'world'
const res = await call`(foo
${p1} ${p2}
)`
console.log(res) // hello world
})()

catch error

in order to catch error you can add the follow code in server and client

1
2
3
process.on('uncaughtException', (err) => {
console.error(err)
})

or just use try...catch statement

develop

dev

git clone https://github.com/GaryChangCN/zara.git
and npm install or yarn install
then npm run dev or yarn run dev

build

npm run build or yarn run build