0.2.5 • Published 7 years ago
@statianzo/pmrpc v0.2.5
@statianzo/pmrpc
JSON-RPC implemented using postMessage API
Installation
npm install @statianzo/pmrpcUsage
iframe within parent
import JsonRpc from './JsonRpc';
const rpc = new JsonRpc({
methods: {
greet: name => `Hello ${name}`
},
source: window
});Parent window
import JsonRpc from './JsonRpc';
const rpc = new JsonRpc({
destination: iframe.contentWindow
});
rpc
.call('greet', 'World')
.then(response => {
console.log(response); // "Hello World"
});JsonRpc Options
origin- (Default:*) Origin to send messagesmethods- (Default:{}) An object of exposed methods. Returning a Promise will defer responding until the promise has completedsource- The source EventTarget to mount JSON rpc on (Window,MessagePort, etc)destination- Target MessageEventSource to send requests to
API
JsonRpc.apply(method, arg1, arg2, ...)
Invoke a remote rpc method with an array of arguments (like Function.apply).
Returns a Promise with the result of the request. Errors from the endpoint
will result in a rejected promise.
JsonRpc.call(method, ...args)
Invoke a remote rpc method with a variadic list of arguments (like
Function.call). Returns a Promise with the result of the request.
Errors from the endpoint will result in a rejected promise.
JsonRpc.mount(source)
Mount JsonRpc to a source EventTarget (Window, MessagePort, Worker). This is
called automatically when a source is passed to the constructor.
JsonRpc.unmount()
Detach the event listener from the JsonRpc instance's source