mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-06-06 05:38:44 +08:00
Fix web socket cause exit not works
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
||||
TaskClientSocketData,
|
||||
TaskServerSocketData,
|
||||
} from "../../server/task.ts";
|
||||
import { ExitTarget } from "../../signal_handler.ts";
|
||||
|
||||
export const handler: Handlers<Task[]> = {
|
||||
GET(req, _ctx) {
|
||||
@@ -15,12 +16,17 @@ export const handler: Handlers<Task[]> = {
|
||||
) => {
|
||||
socket.send(JSON.stringify({ type: e.type, detail: e.detail }));
|
||||
};
|
||||
const close_handle = () => {
|
||||
sendMessage({ type: "close" });
|
||||
socket.close();
|
||||
};
|
||||
const removeListener = () => {
|
||||
t.removeEventListener("new_task", handle);
|
||||
t.removeEventListener("task_started", handle);
|
||||
t.removeEventListener("task_finished", handle);
|
||||
t.removeEventListener("task_progress", handle);
|
||||
t.removeEventListener("task_error", handle);
|
||||
ExitTarget.removeEventListener("close", close_handle);
|
||||
};
|
||||
function sendMessage(mes: TaskServerSocketData) {
|
||||
socket.send(JSON.stringify(mes));
|
||||
@@ -64,6 +70,7 @@ export const handler: Handlers<Task[]> = {
|
||||
t.addEventListener("task_finished", handle);
|
||||
t.addEventListener("task_progress", handle);
|
||||
t.addEventListener("task_error", handle);
|
||||
ExitTarget.addEventListener("close", close_handle);
|
||||
};
|
||||
return response;
|
||||
},
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { TaskManager } from "./task_manager.ts";
|
||||
|
||||
export const ExitTarget = new EventTarget();
|
||||
|
||||
export function add_exit_handler(m: TaskManager) {
|
||||
let first_aborted = true;
|
||||
let ignore_signal = false;
|
||||
@@ -17,6 +19,7 @@ export function add_exit_handler(m: TaskManager) {
|
||||
return;
|
||||
}
|
||||
await m.waiting_unfinished_task();
|
||||
ExitTarget.dispatchEvent(new Event("close"));
|
||||
m.close();
|
||||
};
|
||||
Deno.addSignalListener("SIGINT", handler);
|
||||
@@ -24,6 +27,7 @@ export function add_exit_handler(m: TaskManager) {
|
||||
Deno.addSignalListener("SIGKILL", () => {
|
||||
m.abort();
|
||||
m.force_abort();
|
||||
ExitTarget.dispatchEvent(new Event("close"));
|
||||
m.close();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user