Как динамически зарегистрировать провайдера RPC?

Мне интересно, как я могу сделать динамический вызов RPC в DeepStream ? Например, когда подписчик вызывает URL-адрес http://localhost/myRPCApp/123, здесь 123 может быть любым . Итак, как я могу зарегистрировать метод провайдера?

Eg:

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

О провайдере:

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

Как я могу этого добиться?


person Faizan Saiyed    schedule 31.07.2018    source источник


Ответы (1)


Вы можете получить динамические URL-адреса следующим образом:

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 (используется: 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}`);
}

теперь перейдите

localhost:port/randomURL
person Harsh Patel    schedule 02.08.2018