dyomedea/src/workers/dispatcher-worker.ts

27 lines
776 B
TypeScript
Raw Normal View History

2022-11-07 10:44:35 +00:00
import { initDb } from '../db';
2022-11-07 16:04:02 +00:00
import { putNewGpx } from '../db/gpx';
2022-11-08 17:57:37 +00:00
import { putNewTrk } from '../db/trk';
2022-11-07 10:44:35 +00:00
2022-11-06 16:53:01 +00:00
const self = globalThis as unknown as SharedWorkerGlobalScope;
2022-11-08 17:57:37 +00:00
const actions = { initDb, putNewGpx, putNewTrk };
2022-11-07 10:44:35 +00:00
2022-11-06 16:53:01 +00:00
self.onconnect = function (e) {
var port = e.ports[0];
2022-11-07 10:44:35 +00:00
port.onmessage = async function (e) {
console.log(`Worker received ${JSON.stringify(e.data)}`);
2022-11-06 16:53:01 +00:00
const { id, payload } = e.data;
2022-11-07 10:44:35 +00:00
console.log(`payload.action in actions: ${payload.action in actions}`);
var returnValue: any = 'unknownAction';
if (payload.action in actions) {
returnValue = await actions[<keyof typeof actions>payload.action](
payload.params
);
}
port.postMessage({ id: id, payload: returnValue });
2022-11-06 16:53:01 +00:00
};
};
export default self;