Making RPC calls (asynchronous method calls) between browser windows or iframes.
npm install commutator
parent.js
import { Commutator } from 'commutator';
const rpc = new Commutator({
// The window you want to talk to:
target: myIframe.contentWindow,
// This should be unique for each of your producer<->consumer pairs:
serviceId: 'my-awesome-service',
});
rpc.expose('add', (data) => data.a + data.b);
Destroy the instance
rpc.destroy();
Remove expose handler
const handleAdd = (data) => data.a + data.b
// Expose
rpc.expose('add', handleAdd);
// Unexpose
rpc.unexpose('add', handleAdd);
iframe.js
import { Commutator } from 'commutator';
const rpc = new Commutator({
target: window.parent,
serviceId: 'my-awesome-service',
});
rpc.call('add', { a: 3, b: 5 }).then(result => console.log('3 + 5 is', result));