diff --git a/src/client.ts b/src/client.ts index 33149d2..75bacb3 100644 --- a/src/client.ts +++ b/src/client.ts @@ -254,8 +254,8 @@ export class BareClient { origin: origin, protocols: protocols, requestHeaders: requestHeaders, + channel: channel.port2, }, - websocketChannel: channel.port2, }, [channel.port2]) // protocol is always an empty before connecting @@ -356,15 +356,15 @@ export class BareClient { if ('host' in headers) headers.host = urlO.host; else headers.Host = urlO.host; - const message = Object.assign({ + let resp = (await this.worker.sendMessage({ type: "fetch", fetch: { remote: urlO.toString(), method: req.method, headers: headers, + body: body || undefined, }, - }, body ? { fetchBody: body } : {}); - let resp = (await this.worker.sendMessage(message as WorkerMessage, body ? [body] : [])).fetch; + }, body ? [body] : [])).fetch; let responseobj: BareResponse & Partial = new Response( statusEmpty.includes(resp.status) ? undefined : resp.body, { diff --git a/src/connection.ts b/src/connection.ts index 486624d..b6190c6 100644 --- a/src/connection.ts +++ b/src/connection.ts @@ -18,15 +18,15 @@ export type WorkerMessage = { remote: string, method: string, headers: BareHeaders, - }, - fetchBody?: ReadableStream, + body: ReadableStream | undefined, + } websocket?: { url: string, origin: string, protocols: string[], requestHeaders: BareHeaders, + channel: MessagePort, }, - websocketChannel?: MessagePort, client?: string, }; @@ -64,7 +64,7 @@ export class WorkerConnection { // create the SharedWorker and help other bare-mux clients get the workerPath navigator.serviceWorker.addEventListener("message", event => { if (event.data.type === "getPort" && event.data.port) { - const worker = new SharedWorker(workerPath); + const worker = new SharedWorker(workerPath, "bare-mux-worker"); event.data.port.postMessage(worker.port, [worker.port]); } }); diff --git a/src/worker.ts b/src/worker.ts index 0a71f99..32bd621 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -19,7 +19,7 @@ function handleConnection(port: MessagePort) { const resp = await currentTransport.request( new URL(message.fetch.remote), message.fetch.method, - message.fetchBody, + message.fetch.body, message.fetch.headers, null ); @@ -37,19 +37,19 @@ function handleConnection(port: MessagePort) { if (!currentTransport) throw new Error("No BareTransport was set. Try creating a BareMuxConnection and calling set() on it."); if (!currentTransport.ready) await currentTransport.init(); const onopen = (protocol: string) => { - message.websocketChannel.postMessage({ type: "open", args: [protocol] }); + message.websocket.channel.postMessage({ type: "open", args: [protocol] }); }; const onclose = (code: number, reason: string) => { - message.websocketChannel.postMessage({ type: "close", args: [code, reason] }); + message.websocket.channel.postMessage({ type: "close", args: [code, reason] }); }; const onerror = (error: string) => { - message.websocketChannel.postMessage({ type: "error", args: [error] }); + message.websocket.channel.postMessage({ type: "error", args: [error] }); }; const onmessage = (data: Blob | ArrayBuffer | string) => { if (data instanceof ArrayBuffer) { - message.websocketChannel.postMessage({ type: "message", args: [data] }, [data]); + message.websocket.channel.postMessage({ type: "message", args: [data] }, [data]); } else { - message.websocketChannel.postMessage({ type: "message", args: [data] }); + message.websocket.channel.postMessage({ type: "message", args: [data] }); } } const [data, close] = currentTransport.connect( @@ -62,7 +62,7 @@ function handleConnection(port: MessagePort) { onclose, onerror, ); - message.websocketChannel.onmessage = (event: MessageEvent) => { + message.websocket.channel.onmessage = (event: MessageEvent) => { if (event.data.type === "data") { data(event.data.data); } else if (event.data.type === "close") {