From 3df346289a54a69920f9f3d4bf8151a403d2700c Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 9 Jun 2024 11:36:10 +0800 Subject: [PATCH] ui: fix messages connection --- build/prepare.js | 2 +- packages/ui-default/build/config/webpack.ts | 1 - .../components/message/index.page.ts | 2 +- .../ui-default/components/message/worker.ts | 20 +++++++++---------- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/build/prepare.js b/build/prepare.js index 6e00c7c00..2f579a136 100644 --- a/build/prepare.js +++ b/build/prepare.js @@ -89,7 +89,7 @@ const UIConfig = { esModuleInterop: true, resolveJsonModule: true, jsx: 'react', - module: 'commonjs', + module: 'ESNext', skipLibCheck: true, allowSyntheticDefaultImports: true, target: 'es2020', diff --git a/packages/ui-default/build/config/webpack.ts b/packages/ui-default/build/config/webpack.ts index f4ede936d..7781491d8 100644 --- a/packages/ui-default/build/config/webpack.ts +++ b/packages/ui-default/build/config/webpack.ts @@ -77,7 +77,6 @@ export default function (env: { watch?: boolean, production?: boolean, measure?: polyfill: './polyfill.ts', 'default.theme': './theme/default.js', 'service-worker': './service-worker.ts', - 'messages-shared-worker': './components/message/worker.ts', }, cache: { type: 'filesystem', diff --git a/packages/ui-default/components/message/index.page.ts b/packages/ui-default/components/message/index.page.ts index 2707b3737..723b6610c 100644 --- a/packages/ui-default/components/message/index.page.ts +++ b/packages/ui-default/components/message/index.page.ts @@ -61,7 +61,7 @@ const onmessage = (msg) => { const initWorkerMode = (endpoint) => { console.log('Messages: using SharedWorker'); - const worker = new SharedWorker('/messages-shared-worker.js', { name: 'HydroMessagesWorker' }); + const worker = new SharedWorker(new URL('./worker.ts', import.meta.url), { name: 'HydroMessagesWorker' }); worker.port.start(); window.addEventListener('beforeunload', () => { worker.port.postMessage({ type: 'unload' }); diff --git a/packages/ui-default/components/message/worker.ts b/packages/ui-default/components/message/worker.ts index 4e186061b..28d722b75 100644 --- a/packages/ui-default/components/message/worker.ts +++ b/packages/ui-default/components/message/worker.ts @@ -31,12 +31,17 @@ function broadcastMsg(message: any) { function initConn(path: string, port: MessagePort, cookie: any) { if (cookie !== lcookie) conn?.close(); else if (conn && conn.readyState === conn.OPEN) return; + const url = new URL(path, location.origin); + if (cookie) url.searchParams.set('sid', cookie.split('sid=')[1].split(';')[0]); lcookie = cookie; console.log('Init connection for', path); conn?.close(); - conn = new ReconnectingWebsocket(path); + conn = new ReconnectingWebsocket(url.toString()); ports.push(port); - conn.onopen = () => conn.send(cookie); + conn.onopen = () => { + console.log('Connected to', path); + broadcastMsg({ type: 'open' }); + }; conn.onerror = () => broadcastMsg({ type: 'error' }); conn.onclose = (ev) => broadcastMsg({ type: 'close', error: ev.reason }); conn.onmessage = (message) => { @@ -46,14 +51,9 @@ function initConn(path: string, port: MessagePort, cookie: any) { return; } const payload = JSON.parse(message.data); - if (payload.event === 'auth') { - if (['PermissionError', 'PrivilegeError'].includes(payload.error)) { - broadcastMsg({ type: 'close', error: payload.error }); - conn.close(); - } else { - console.log('Connected to', path); - broadcastMsg({ type: 'open' }); - } + if (['PermissionError', 'PrivilegeError'].includes(payload.error)) { + broadcastMsg({ type: 'close', error: payload.error }); + conn.close(); } else { broadcastMsg({ type: 'message', payload }); let acked = false;