UNPKG

echogarden

Version:

An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.

30 lines (22 loc) 670 B
export class SignalChannel { channel: MessageChannel handlers = new Map<string, SignalChannelHandler>() constructor() { this.channel = new MessageChannel() this.channel.port2.onmessage = (event: MessageEvent) => { const signalName = event.data.signalName const signalData = event.data.data const handler = this.handlers.get(signalName) if (handler) { handler(signalData) } } } on(signalName: string, handler: SignalChannelHandler) { this.handlers.set(signalName, handler) } send(signalName: string, data?: any) { this.channel.port1.postMessage({ signalName, data }) } } export type SignalChannelHandler = (data?: any) => void