diff --git a/server/api/v1/task/index.get.ts b/server/api/v1/task/index.get.ts index a9e0c18..b5da1b8 100644 --- a/server/api/v1/task/index.get.ts +++ b/server/api/v1/task/index.get.ts @@ -48,5 +48,7 @@ export default defineWebSocketHandler({ if (!peer.id) return; if (adminSocketSessions[peer.id] === undefined) return; delete adminSocketSessions[peer.id]; + + taskHandler.disconnectAll(peer.id); }, }); diff --git a/server/internal/tasks/index.ts b/server/internal/tasks/index.ts index 57bae6c..6c7b197 100644 --- a/server/internal/tasks/index.ts +++ b/server/internal/tasks/index.ts @@ -111,6 +111,14 @@ class TaskHandler { return true; } + disconnectAll(id: string) { + for (const [taskId] of Object.keys(this.taskRegistry)) { + delete this.taskRegistry[taskId].clients[id]; + } + + delete this.clientRegistry[id]; + } + disconnect(id: string, taskId: string) { if (!this.taskRegistry[taskId]) return false;