假设我有2台网络服务器。他们俩都安装了Node.js并运行了一个网站(使用Express)。非常基本的东西。
Server-A如何告诉Server-B执行某个功能? (在node.js内)
最好......有一个npm模块,这对我来说真的很容易吗?
答案 0 :(得分:8)
签出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的代码。
答案 1 :(得分:6)
答案 2 :(得分:2)
您最有可能想要类似于Node的JSON-RPC模块。经过一些快速搜索,here是一个适用于Connect的JSON-RPC中间件模块,非常适合与Express一起使用。
此外,this看起来也很有希望。
答案 3 :(得分:0)
您需要的是RPC。可以自己构建,但是根据所需的功能,可能会很耗时。
鉴于我必须投入的时间,我建议您找到一个适合您目的的体面的图书馆,而不是徒劳。我的用例需要其他复杂的功能,例如选择性RPC调用,对此我找不到足够轻量的东西,因此必须自己动手。
这里是https://github.com/DhavalW/octopus。
现在设置起来非常容易,并且可以在不修改的情况下使用socket.io,websockets,子进程等一堆常见的传输方式。除了重命名功能(正在开发中)外,大多数使用安全。