after checking the type it created a worker, but, when I did worker.postMessage(), the message event listener doesn't listen to anything
worker-client.ts
import { EncoderWorkerRes } from '../types';
import { serializeAudioBuffer } from './audio-trimmer-helpers';
let worker: Worker;
if (typeof Worker !== 'undefined') {
worker = new Worker('./worker.js');
console.log('worker-client', worker);
} else {
console.error('Web workers are not supported in this environment.');
}
export default function encode(audioBuffer: AudioBuffer, type: string): Promise<Blob> {
console.log('incode function called');
const id = Math.random();
return new Promise((resolve, reject) => {
if (!worker) {
return reject(new Error('Worker is not defined'));
}
const audioData = serializeAudioBuffer(audioBuffer);
if (worker.postMessage) {
console.log('post message is present');
worker.postMessage({
type,
audioData,
id,
});
}
const listener = ({ data }: MessageEvent<EncoderWorkerRes>) => {
console.log('inside encode promise listener', { data });
if (!data || data.id !== id) return;
if (data.success) {
resolve(data.data);
console.log('inside encode promise resolve', { data });
} else {
console.log('inside encode promise reject', { data });
reject(new Error(data.message));
}
worker.removeEventListener('message', listener);
};
worker.addEventListener('message', listener);
});
}