~statianzo/pmrpc

JSON-RPC over postMessage
fix build url
split build and test

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~statianzo/pmrpc
read/write
git@git.sr.ht:~statianzo/pmrpc

You can also use your local clone with git send-email.

#@statianzo/pmrpc

builds.sr.ht status

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 messages
  • methods - (Default: {}) An object of exposed methods. Returning a Promise will defer responding until the promise has completed
  • source - 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