fix(core): disconnect ws when user logout (#8188)

This commit is contained in:
EYHN
2024-09-11 07:55:42 +00:00
parent d93c3b3719
commit 85aa73bcf6
12 changed files with 96 additions and 50 deletions

View File

@@ -70,5 +70,7 @@ export class WorkspaceEngine extends Entity<{
override dispose(): void {
this.forceStop();
this.doc.dispose();
this.awareness.dispose();
}
}

View File

@@ -16,4 +16,10 @@ export class WorkspaceEngineService extends Service {
constructor(private readonly workspaceScope: WorkspaceScope) {
super();
}
override dispose(): void {
this._engine?.dispose();
this._engine = null;
super.dispose();
}
}

View File

@@ -3,6 +3,7 @@ import type { Awareness } from 'y-protocols/awareness.js';
export interface AwarenessConnection {
connect(awareness: Awareness): void;
disconnect(): void;
dispose?(): void;
}
export class AwarenessEngine {
@@ -15,4 +16,8 @@ export class AwarenessEngine {
disconnect() {
this.connections.forEach(connection => connection.disconnect());
}
dispose() {
this.connections.forEach(connection => connection.dispose?.());
}
}

View File

@@ -219,4 +219,9 @@ export class DocEngine {
});
});
}
dispose() {
this.stop();
this.server?.dispose?.();
}
}

View File

@@ -23,4 +23,6 @@ export interface DocServer {
waitForConnectingServer(signal: AbortSignal): Promise<void>;
disconnectServer(): void;
onInterrupted(cb: (reason: string) => void): void;
dispose?(): void;
}