soprano.rpc

1.2.0 • Public • Published

soprano.rpc

RPC Protocol for soprano

Install

npm i soprano.rpc --save

Examples

Basic

Every mapped callback on server side will take "req" parameter as last argument. A SopranoClient will be passed to that parameter on execution.

server.js

const Soprano = require('soprano');
const RPCProtocol = require('soprano.rpc');
 
const soprano = new Soprano();
const rpcProtocol = soprano.createProtocol(RPCProtocol);
const rpcMap = rpcProtocol.map;
 
rpcMap.add(function(a, b, req) {
    return a + b;
}).sub(function (a, b, req) {
    return a - b;
}).mul(function (a, b, req) {
    return a * b;
}).div(function (a, b, req) {
    return a / b;
}).asyncTest(async function(message, delay, req) {
  return new Promise(function(resolve) {
    setTimeout(resolve, delay, message);
  });
});
 
(async function () {
    await soprano.bind(rpcProtocol);
    let server = await soprano.listen();
})();
 
 

client.js

const Soprano = require('soprano');
const RPCProtocol = require('soprano.rpc');
 
(async function () {
    const soprano = new Soprano();
    const rpcProtocol = soprano.createProtocol(RPCProtocol);
    const rpc = rpcProtocol.executor;
 
    console.log(await rpc.add(10, 5));
    // output: 15
    console.log(await rpc.sub(10, 5));
    // output: 5
    console.log(await rpc.mul(10, 5));
    // output: 50
    console.log(await rpc.div(10, 5));
    // output: 2
 
    console.log(await rpc.asyncTest("Hello World", 1000));
    // output: Hello World (after 1000ms)
    
    // dispose all resources if you dont plan to re-use them
    rpcProtocol.dispose();
    soprano.dispose();
})();
 
 

More Examples ?

Please see the tests directory

Package Sidebar

Install

npm i soprano.rpc

Weekly Downloads

1

Version

1.2.0

License

MIT

Last publish

Collaborators

  • tolgahan