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

How can Server-A tell Server-B to execute a function?

You can use one of the RPC modules, for example dnode.


Check out Wildcard API, it's an RPC implementation for JavaScript.

It works between the browser and a Node.js server and also works between multiple Node.js processes:

// 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"
})();

You can browse the code of the example here.


You most likely want something like a JSON-RPC module for Node. After some quick searching, here is a JSON-RPC middleware module for Connect that would be perfect to use with Express.

Also, this one looks promising too.