clean up RPC structure

This commit is contained in:
2019-09-21 13:11:57 +02:00
parent 759bb9c40f
commit 160be94e3b
4 changed files with 62 additions and 50 deletions
+24 -19
View File
@@ -6,26 +6,31 @@ let subcallback
new RPCServer(20000, [{
name: "HelloWorldRPCGroup",
exportRPCs: () => [{
type: 'Call',
name: 'echo',
call: async (s:string) => s,
},
{
type: 'Hook',
name: 'subscribe',
hook: async (callback):Promise<any> => {
subcallback = callback
return new SubscriptionResponse(""+Math.random())
exportRPCs: () => [
{
name: 'echo',
call: async (s:string) => s,
},{
name: 'simpleSubscribe',
hook: async(callback) => {
subcallback = callback
return new SubscriptionResponse(""+Math.random())
}
},{
name: 'subscribe',
hook: async (callback):Promise<any> => {
subcallback = callback
return new SubscriptionResponse(""+Math.random())
},
onClose: (res:SubscriptionResponse, rpc:HookRPC) => {
console.log("Specific close handler for", rpc.name, res)
subcallback = null
},
onCallback: (...args) => { console.log.apply(console, args) }
},
onClose: (res:SubscriptionResponse) => {
console.log("Specific close handler for", res)
subcallback = null
}
},
function add(...args:number[]):number {return args.reduce((a,b)=>a+b, 0)},
function triggerCallback(...messages:any[]):number {return subcallback.apply({}, messages)},
]
function add(...args:number[]):number {return args.reduce((a,b)=>a+b, 0)},
function triggerCallback(...messages:any[]):number {return subcallback.apply({}, messages)},
]
}])
try{
+17 -4
View File
@@ -13,11 +13,24 @@ client.connect().then(async _ => {
const handler = (s) => {
counter++
if(counter === 3)
console.log("callback was called 3 times", counter === 3)
console.log("subscribe call counter met", counter === 3)
}
await client["HelloWorldRPCGroup"].subscribe(handler)
client["HelloWorldRPCGroup"].triggerCallback("test1", "test1", "test1", )
client["HelloWorldRPCGroup"].triggerCallback("test2", "test2", "test2", )
client["HelloWorldRPCGroup"].triggerCallback("test3", "test3", "test3", )
await Promise.all([
client["HelloWorldRPCGroup"].triggerCallback("test1", "test1", "test1", ),
client["HelloWorldRPCGroup"].triggerCallback("test2", "test2", "test2", ),
client["HelloWorldRPCGroup"].triggerCallback("test3", "test3", "test3", ),
])
counter = 0
const simplehandler = (s) => {
counter++
if(counter === 3)
console.log("simpleSubscribe call counter met", counter === 3)
}
await client["HelloWorldRPCGroup"].simpleSubscribe(simplehandler)
client["HelloWorldRPCGroup"].triggerCallback("simple1", "simple1", "simple1", )
client["HelloWorldRPCGroup"].triggerCallback("simple2", "simple2", "simple2", )
client["HelloWorldRPCGroup"].triggerCallback("simple3", "simple3", "simple3", )
})