@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
70 lines (69 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebWorker = void 0;
class WebWorker {
assetsDir;
onFrame;
worker;
constructor(assetsDir, onFrame) {
this.assetsDir = assetsDir;
this.onFrame = onFrame;
}
async init_e2ee() {
this.worker = new Worker(this.assetsDir + "/e2ee-worker.js");
this.worker.onmessage = (event) => {
try {
if (event.data.type === "rms") {
if (this.onFrame !== undefined && typeof this.onFrame === "function") {
this.onFrame({
rms: event.data.rms,
kind: "audio",
receiverId: event.data.receiverId,
publisherId: event.data.publisherId,
});
}
}
}
catch (e) {
console.error("[Worker]: invalid event");
}
};
this.worker.onerror = (e) => console.error(e);
this.worker.postMessage({
operation: "initialize",
});
}
getWorker() {
return this.worker;
}
setKeys(keys) {
if (!this.worker) {
console.warn("Cannot pass keys to e2ee worker as it is not initialized yet.");
return;
}
this.worker.postMessage({
operation: "setKeys",
keys,
});
}
createWorkerFromFunction(workerFunction) {
const blob = new Blob([`(${workerFunction.toString()})()`], {
type: "application/javascript",
});
return new Worker(URL.createObjectURL(blob));
}
async createWorkerFromScript(scriptUrl) {
const scriptContent = await fetch(scriptUrl).then((r) => r.text());
const blob = new Blob([scriptContent], { type: "application/javascript" });
const workerUrl = URL.createObjectURL(blob);
const worker = new Worker(workerUrl);
return worker;
}
}
exports.WebWorker = WebWorker;
// function workerScript() {
// self.onmessage = WorkerSpec.onmessage;
// }
function workerScript() {
return "";
}