【发布时间】:2011-08-23 19:32:58
【问题描述】:
假设我有 2 个网络服务器。他们俩都刚刚安装了 Node.js 并正在运行一个网站(使用 Express)。很基本的东西。
Server-A 如何告诉 Server-B 执行一个函数? (在 node.js 中)
最好...是否有一个 npm 模块可以让我很容易做到这一点?
【问题讨论】:
标签: javascript node.js ipc rpc
假设我有 2 个网络服务器。他们俩都刚刚安装了 Node.js 并正在运行一个网站(使用 Express)。很基本的东西。
Server-A 如何告诉 Server-B 执行一个函数? (在 node.js 中)
最好...是否有一个 npm 模块可以让我很容易做到这一点?
【问题讨论】:
标签: javascript node.js ipc rpc
更新:我在下面创建和链接的库目前未维护。请查看此线程上的其他答案。
您需要的是所谓的 RPC。可以构建自己的,但根据您需要的功能,这可能会很耗时。
鉴于我必须投入大量时间,我建议您找到一个适合您目的的体面库,而不是手动滚动。我的用例需要额外的复杂功能,例如选择性 RPC 调用,但我找不到足够轻量级的功能,所以我不得不自己动手。
【讨论】:
查看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"
})();
您可以浏览示例代码here。
【讨论】:
【讨论】:
【讨论】: