Arc RPC
Asynchronous Remote Classes make RPC simple
How does it work
Arc RPC allows you to remotely call functions on other processes or even other hardware using these few main concepts
- Ability to wrap existing class instances
- Mock that acts like the remote class
- Bi-directional
- Protocol agnostic
How to use it
Here is a basic example of using RPC with node-ipc
Server.js
let ClientIpcRpc = require("arc-rpc").ClientIpcRpc
let serverRpc = null
class ClientClass {
clientTest() {
console.log("Remotely called by server, calling server method.")
await rpc.class.serverTest()
console.log("Called remote server method!")
}
}
serverRpc = new ClientIpcRpc ("testing", Buffer.from ('flbd+mTz8bIWl2DQxFMKHYAA1+PFxpEKmVNsZpFP5xQ=', 'base64'), new ClientClass())
Client.js
let ServerIpcRpcMaster = require("arc-rpc").ServerIpcRpcMaster
class ServerClass {
serverTest() {
console.log("Remotely called by client.")
}
}
let rpcMaster = new ServerIpcRpcMaster ("testing", Buffer.from ('flbd+mTz8bIWl2DQxFMKHYAA1+PFxpEKmVNsZpFP5xQ=', 'base64'), new ServerClass())
rpcMaster.on("client", (clientRpc) => {
console.log("Got new client, remotely calling client test.")
await clientRpc.class.clientTest()
console.log("Remotely called client test!")
})
Why are you encrypting IPC streams??
This is made for a specific project, soon the node-ipc connections will be replaced with net sockets, or be replaced with a net library. I know, it's silly this way.
Basic documentation
I'll get to completing this later