@statianzo/pmrpc
v0.2.5
Published
JSON RPC over PostMessage
Downloads
4
Readme
@statianzo/pmrpc
JSON-RPC implemented using postMessage API
Installation
npm install @statianzo/pmrpc
Usage
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