简体   繁体   English

如何动态注册RPC提供程序?

[英]How to dynamically register a RPC provider?

I'm wondering how can I make dynamic RPC call in DeepStream ? 我想知道如何在DeepStream中进行动态RPC调用? For example, when a subscriber call a url http://localhost/myRPCApp/123 , here 123 could be anything. 例如,当订户调用URL http:// localhost / myRPCApp / 123时 ,这里的123可以是任何值。 So how can I register a provider method? 那么如何注册提供程序方法?

Eg: 例如:

client.rpc.make(<MY-DYNAMIC-URL>, { patientId: 2 }, (error, result) =>{
    console.log(error, result);
})

On Provider: 在提供者上:

client.rpc.provide(<MY-DYNAMIC-URL>, (data, response) => {
    response.send('Hey there!');    
})

How can I achieve this? 我该如何实现?

You can achieve a dynamic URLs like this: 您可以这样实现动态网址:

1) server.js (Used: NodeJS) 1)server.js(使用过的:NodeJS)

const ds = deepstream('<URL>');
const randomURL = Math.ceil(Math.random() * 10000).toString();
ds.rpc.provide(randomURL, (data, response) => {
  console.log("received request for: ", randomURL, data);
  response.send(`${Date.now()} Hello from random Service: ${randomURL}`);
})

2) client.js (Used: microjs ) 2)cli​​ent.js(使用过的microjs

module.exports = async (req, res) => {
  let fullPath = req.url;
  fullPath = fullPath.split('/')[1];
  const result = await ds.rpc.make(fullPath, {}, (err, result) => {
    console.log("response received: ", err, result);
    res.end(result);
  });
  console.log(`result for ${fullPath} is: ${result}`);
}

now go to 现在去

localhost:port/randomURL

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM