diff --git a/README.md b/README.md index 55e2bbb..f8d9447 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ const echo = (x) => x const server = new Backend.RPCServer(20000, [{ name: 'HelloWorldRPCGroup', exportRPCs: () => [ - echo, - function echof(x){ return x }, + echo, //named function variable + function echof(x){ return x }, //named function { - name: 'echoExplicit', + name: 'echoExplicit', //describing object call: async (x) => x } ] @@ -31,10 +31,37 @@ client.connect().then(async () => { const r1 = await client['HelloWorldRPCGroup'].echof('World') const r2 = await client['HelloWorldRPCGroup'].echoExplicit('RPC!') - console.log(r0,r1,r2) + console.log(r0,r1,r2) //Hello World RPC! }) ``` +# Using callbacks + +rpclibrary offers a special type of call that can be used with callbacks + +```typescript +import {Backend, Frontend, Utils} from 'rpclibrary' + +const callbacks:Function[] = [] +const callbackserver = new Backend.RPCServer(20000, [{ + name: 'HelloWorldRPCGroup', + exportRPCs: () => [ + function triggerCallbacks(message){ callbacks.forEach(cb => cb(message)) }, + { + name: 'subscribe', + hook: async (callback) => {callbacks.push(callback); return Utils.makeSubResponse()} + } + ] +}]) + +const callbackclient = new Frontend.RPCSocket(20000, 'localhost') +callbackclient.connect().then(async () => { + const r0 = await client['HelloWorldRPCGroup'].subscribe(console.log) + console.log(r0) + await client['HelloWorldRPCGroup'].triggerCallbacks("Hello!") +}) +``` + # Documentation [https://gitea.frontblock.me/fw-docs/rpclibrary]