繁体   English   中英

在 Node.js 中,如何让一台服务器调用另一台服务器上的函数?

[英]In Node.js, how do I make one server call a function on another server?

假设我有 2 个 Web 服务器。 他们都刚刚安装了 Node.js 并且正在运行一个网站(使用 Express)。 很基本的东西。

服务器-A 如何告诉服务器-B 执行一个函数? (在 node.js 中)

最好......是否有一个 npm 模块可以让我很容易?

服务器-A 如何告诉服务器-B 执行一个函数?

您可以使用RPC模块之一,例如dnode

查看Wildcard API ,它是 JavaScript 的 RPC 实现。

它在浏览器和 Node.js 服务器之间工作,也可以在多个 Node.js 进程之间工作:

// Node.js process 1

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

endpoints.hello = async function() {
  const msg = 'Hello from process 1';
  return msg;
};

const app = express();
app.use(wildcardMiddleware());

app.listen(3000);
// Node.js process 2

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

wildcard.serverUrl = 'http://localhost:3000';

(async () => {
  const msg = await endpoints.hello();
  console.log(msg); // Prints "Hello from process 1"
})();

您可以在此处浏览示例代码。

你很可能想要一个类似于 Node.js 的 JSON-RPC 模块的东西。 经过一些快速搜索,这里有一个用于 Connect 的 JSON-RPC 中间件模块,它非常适合与 Express 一起使用。

此外,这个看起来也很有希望。

更新:我在下面制作和链接的库目前没有维护。 请查看此线程上的其他答案。


您需要的是 RPC。 可以构建自己的,但根据您需要的功能,这可能很耗时。

考虑到我必须投入的时间,我建议您找到一个适合您目的的体面库,而不是手动滚动。 我的用例需要额外的复杂功能,例如选择性 RPC 调用,为此我找不到任何足够轻量的功能,因此不得不自己动手。

这是https://github.com/DhavalW/octopus

暂无
暂无

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

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