accordant
Version:
One way shared/worker async bindings
22 lines (16 loc) • 554 B
JavaScript
import '@webreflection/channel/worker';
import { isChannel, withResolvers } from './utils.js';
import { exports, ffi } from './ffi.js';
import Handler from './handler.js';
const { promise, resolve } = withResolvers();
addEventListener('channel', function channel(event) {
if (isChannel(event, channel)) {
const [port] = event.ports;
port.addEventListener('message', new Handler(ffi));
resolve(port);
}
});
const broadcast = (...args) => {
promise.then(port => port.postMessage([true, '', args]));
};
export { broadcast, exports };