From 530f55bc90b4f840ac8e5e236235126ad80db9a3 Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 22 Sep 2019 17:30:31 +0200 Subject: [PATCH] push --- README.md | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f8d9447..3eaa7b5 100644 --- a/README.md +++ b/README.md @@ -43,23 +43,37 @@ 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, [{ +const callbacks:Map = new Map() + +const server = new Backend.RPCServer(20000, [{ name: 'HelloWorldRPCGroup', exportRPCs: () => [ - function triggerCallbacks(message){ callbacks.forEach(cb => cb(message)) }, + function triggerCallbacks(...messages){ callbacks.forEach(cb => cb.apply({}, messages)) }, { name: 'subscribe', - hook: async (callback) => {callbacks.push(callback); return Utils.makeSubResponse()} + hook: async (callback) => { + const resp = Utils.makeSubResponse() + callbacks.set(resp.uuid, callback); + return resp + } + },{ + name: 'unsubscribe', + call: async (uuid) => { callbacks.delete(uuid) } } ] }]) -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!") +const client = new Frontend.RPCSocket(20000, 'localhost') +client.connect().then(async () => { + const res = await client['HelloWorldRPCGroup'].subscribe(async (...args:any) => { + console.log.apply(console, args) + + /* close the callbacks once you're done */ + await client['HelloWorldRPCGroup'].unsubscribe(res.uuid) + client.unhook(res.uuid) + }) + + await client['HelloWorldRPCGroup'].triggerCallbacks("Hello", "World", "Callbacks") }) ```