add getTransport, add retrying to the sw messageport promise

This commit is contained in:
Toshit Chawda 2024-07-07 19:38:15 -07:00
parent c540450b66
commit dc9f4a7e39
No known key found for this signature in database
GPG key ID: 91480ED99E2B3D9D
6 changed files with 43 additions and 19 deletions

View file

@ -2,6 +2,7 @@ import { BareTransport } from "./baretypes";
import { WorkerMessage, WorkerResponse } from "./connection"
let currentTransport: BareTransport | null = null;
let currentTransportName: string = "";
function noClients(): Error {
// @ts-expect-error mdn error constructor: new Error(message, options)
@ -21,13 +22,17 @@ function handleConnection(port: MessagePort) {
// @ts-expect-error
const func = new AsyncFunction(message.client);
currentTransport = await func();
console.log("set transport to ", currentTransport);
const [newTransport, name] = await func();
currentTransport = newTransport;
currentTransportName = name;
console.log("set transport to ", currentTransport, name);
port.postMessage(<WorkerResponse>{ type: "set" });
} catch (err) {
port.postMessage(<WorkerResponse>{ type: "error", error: err });
}
} else if (message.type === "get") {
port.postMessage(<WorkerResponse>{ type: "get", name: currentTransportName });
} else if (message.type === "fetch") {
try {
if (!currentTransport) throw noClients();