| 123456789101112131415161718192021222324252627282930 |
- import { useState } from "react";
- export interface MessageEventHandler {
- (event: MessageEvent): void;
- }
- export function useWorker(
- workerType: string,
- messageEventHandler: MessageEventHandler
- ): Worker {
- // Create new worker once and never again
- const [worker] = useState(() => createWorker(workerType, messageEventHandler));
- return worker;
- }
- function createWorker(
- workerType: string,
- messageEventHandler: MessageEventHandler
- ): Worker {
- if (workerType === "whisper") {
- const worker = new Worker(new URL("../workers/whisper.js", import.meta.url), {
- type: "module",
- });
- // Listen for messages from the Web Worker
- worker.addEventListener("message", messageEventHandler);
- return worker;
- }
- throw new Error('workerType not found');
- }
|