RPC 与 node.js 的承诺

bar*_*ara 18 javascript rpc websocket node.js promise

是否有任何与承诺一起使用的 RPC 模块?

在服务器上,我有返回承诺的函数。我想向浏览器客户端公开它们以通过 websockts 或回退调用。我找到了一些 RPC 库,例如 dnode,但他们希望回调作为参数。

我想要这样的东西:

服务器:

rpc.expose({
    超时:函数(时间){
        var d = Q.defer();
        设置超时(函数(){
            d.解决();
        }, 时间);
        返回 d. 承诺;
    }
});

客户:

rpc.timeout(2000).then(function() {
    console.log('完成');
});

bri*_*out 5

我编写了一个名为Wildcard API的 RPC 实现,它可以让您做到这一点:

// Node.js server

const { server } = require('@wildcard-api/server');

// We define a `timeout` function on the server
server.timeout = function({seconds}) {
  await sleep({seconds});
};

function sleep({seconds}) {
  return new Promise(resolve => setTimeout(resolve, seconds * 1000));
}
Run Code Online (Sandbox Code Playgroud)
// Browser

import { server } from '@wildcard-api/client';

(async () => {
  // Wildcard makes our `timeout` function available in the browser
  await server.timeout({seconds: 2});
  // 2 seconds later...
  console.log('done');
})();
Run Code Online (Sandbox Code Playgroud)


obe*_*tet 0

是你想要的?

该示例的“后端”在 NodeJS 和浏览器中运行。还有一个Python版本。

该示例的“前端”(请参阅​​完整文件夹)也在 NodesJS、浏览器和 Python 中运行。

您可以在这里找到一些图表。

它基于WAMP 版本 2,并使用Autobahn作为 WAMP 路由器。

免责声明:我是 WAMP / Autobahn 的原作者,为 Tavendo 工作。