mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
ui: fix messages connection
This commit is contained in:
4 files changed
+9
-10
No files matched your search
+1
-1
@@ -89,7 +89,7 @@ const UIConfig = {
|
|||||||
esModuleInterop: true,
|
esModuleInterop: true,
|
||||||
resolveJsonModule: true,
|
resolveJsonModule: true,
|
||||||
jsx: 'react',
|
jsx: 'react',
|
||||||
module: 'commonjs',
|
module: 'ESNext',
|
||||||
skipLibCheck: true,
|
skipLibCheck: true,
|
||||||
allowSyntheticDefaultImports: true,
|
allowSyntheticDefaultImports: true,
|
||||||
target: 'es2020',
|
target: 'es2020',
|
||||||
|
|||||||
@@ -77,7 +77,6 @@ export default function (env: { watch?: boolean, production?: boolean, measure?:
|
|||||||
polyfill: './polyfill.ts',
|
polyfill: './polyfill.ts',
|
||||||
'default.theme': './theme/default.js',
|
'default.theme': './theme/default.js',
|
||||||
'service-worker': './service-worker.ts',
|
'service-worker': './service-worker.ts',
|
||||||
'messages-shared-worker': './components/message/worker.ts',
|
|
||||||
},
|
},
|
||||||
cache: {
|
cache: {
|
||||||
type: 'filesystem',
|
type: 'filesystem',
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ const onmessage = (msg) => {
|
|||||||
|
|
||||||
const initWorkerMode = (endpoint) => {
|
const initWorkerMode = (endpoint) => {
|
||||||
console.log('Messages: using SharedWorker');
|
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();
|
worker.port.start();
|
||||||
window.addEventListener('beforeunload', () => {
|
window.addEventListener('beforeunload', () => {
|
||||||
worker.port.postMessage({ type: 'unload' });
|
worker.port.postMessage({ type: 'unload' });
|
||||||
|
|||||||
@@ -31,12 +31,17 @@ function broadcastMsg(message: any) {
|
|||||||
function initConn(path: string, port: MessagePort, cookie: any) {
|
function initConn(path: string, port: MessagePort, cookie: any) {
|
||||||
if (cookie !== lcookie) conn?.close();
|
if (cookie !== lcookie) conn?.close();
|
||||||
else if (conn && conn.readyState === conn.OPEN) return;
|
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;
|
lcookie = cookie;
|
||||||
console.log('Init connection for', path);
|
console.log('Init connection for', path);
|
||||||
conn?.close();
|
conn?.close();
|
||||||
conn = new ReconnectingWebsocket(path);
|
conn = new ReconnectingWebsocket(url.toString());
|
||||||
ports.push(port);
|
ports.push(port);
|
||||||
conn.onopen = () => conn.send(cookie);
|
conn.onopen = () => {
|
||||||
|
console.log('Connected to', path);
|
||||||
|
broadcastMsg({ type: 'open' });
|
||||||
|
};
|
||||||
conn.onerror = () => broadcastMsg({ type: 'error' });
|
conn.onerror = () => broadcastMsg({ type: 'error' });
|
||||||
conn.onclose = (ev) => broadcastMsg({ type: 'close', error: ev.reason });
|
conn.onclose = (ev) => broadcastMsg({ type: 'close', error: ev.reason });
|
||||||
conn.onmessage = (message) => {
|
conn.onmessage = (message) => {
|
||||||
@@ -46,14 +51,9 @@ function initConn(path: string, port: MessagePort, cookie: any) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const payload = JSON.parse(message.data);
|
const payload = JSON.parse(message.data);
|
||||||
if (payload.event === 'auth') {
|
|
||||||
if (['PermissionError', 'PrivilegeError'].includes(payload.error)) {
|
if (['PermissionError', 'PrivilegeError'].includes(payload.error)) {
|
||||||
broadcastMsg({ type: 'close', error: payload.error });
|
broadcastMsg({ type: 'close', error: payload.error });
|
||||||
conn.close();
|
conn.close();
|
||||||
} else {
|
|
||||||
console.log('Connected to', path);
|
|
||||||
broadcastMsg({ type: 'open' });
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
broadcastMsg({ type: 'message', payload });
|
broadcastMsg({ type: 'message', payload });
|
||||||
let acked = false;
|
let acked = false;
|
||||||
|
|||||||
Reference in new issue
Block a user