From 241c8609f1ce2c22b59a47c96288e78f85e954ad Mon Sep 17 00:00:00 2001 From: hypercross Date: Sun, 12 Jul 2026 10:14:36 +0800 Subject: [PATCH] refactor: expose Comlink API via MessagePort in SharedWorker Update the worker to use the 'onconnect' event to handle incoming MessagePorts, ensuring each connecting tab receives its own port. --- src/workers/journal.worker.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/workers/journal.worker.ts b/src/workers/journal.worker.ts index d88787d..0b4a875 100644 --- a/src/workers/journal.worker.ts +++ b/src/workers/journal.worker.ts @@ -520,4 +520,9 @@ const api = { export type JournalWorkerAPI = typeof api; -Comlink.expose(api); +// SharedWorkers communicate via MessagePort from the 'connect' event, +// not via self.onmessage. Each connecting tab gets its own port. +(self as unknown as { onconnect: ((e: MessageEvent) => void) | null }).onconnect = (e: MessageEvent) => { + const port = e.ports[0]; + Comlink.expose(api, port); +};