1.0.1 • Published 3 years ago

remote-function v1.0.1

Weekly downloads
5
License
MIT
Repository
github
Last release
3 years ago

Remote Function

Build Status Coverage Status

Remote Function is a library for making remote procedure calls in an intuitive way. Just declare functions on the server and call them from the client, that's it! If the function errors, the error will seamlessly be transferred to the calling client. This is done via JSON RPC 2.0 which makes it possible to use with other clients. It has no dependencies and works by utilizing Proxies that was introduced with ES6.

Install

npm install remote-function

Example

Server

Initiate a server, then just define your function on the server object.

const server = require('remote-function').createServer();

server.divide = (arg1, arg2) => {
    if (arg2 === 0) {
        throw new Error("Can't divide by zero.");
    }
    return arg1 / arg2;
};

Client

Define where the server is located when creating a client. Then you can just call the function that is defined at the server and you get a promise that returns what the server function will return. If you are on >=Node 8.0.0, you can use it with await if you are within an async function.

const remote = require('remote-function').createClient({ host: '127.0.0.1' });

const result = await remote.divide(12, 3);
console.log(result); // 4

If an error is thrown on the server:

try {
    const result = await remote.divide(12, 0);
    console.log(result); // Will not be reached
} catch (error) {
    // Get the error thrown on the server, including stacktrace
}

Options

Server

OptionDefaultDescription
host"0.0.0.0"The host that the server listen on
port6356The port that the server listen on
includeStacktrueShould errors include the server stacktrace?

Client

OptionDefaultDescription
host"127.0.0.1"The host that the server listens on
port6356The port that the server listens on
headers{}Additional request headers
connectTimeout0The socket connection timeout
responseTimeout0The response wait timeout

createClient also supports options from http.request(). For example, you can set headers to add extra headers to http request, or auth if you need Basic Authentication. You cannot change http request method.

1.0.1

3 years ago

1.0.0

4 years ago

1.0.0-alpha-1

5 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago