// test_events.ts // 测试全局事件系统 import { globalEventManager } from "./event_manager.ts"; // 测试主线程事件监听 globalEventManager.addEventListener("test-event", (event: Event) => { const customEvent = event as CustomEvent; console.log("🧪 主线程收到测试事件:", customEvent.detail); }); globalEventManager.addEventListener("agv-worker-ready", (event: Event) => { const customEvent = event as CustomEvent; console.log("✅ AGV Worker 已就绪:", customEvent.detail); }); // 创建测试 Worker const testWorker = new Worker( new URL("./test_worker.ts", import.meta.url).href, { type: "module" } ); // 注册测试 Worker globalEventManager.registerWorker("testWorker", testWorker); // 延迟发送一些测试事件 setTimeout(() => { console.log("🚀 开始事件测试..."); // 发送主线程事件 globalEventManager.dispatchGlobalEvent({ type: "test-event", source: "main", data: { message: "Hello from main thread!", timestamp: Date.now() } }); // 发送给特定 Worker 的事件 globalEventManager.dispatchGlobalEvent({ type: "ping", source: "main", target: "testWorker", data: { message: "Ping to test worker!" } }); }, 2000); // 定期显示事件日志 setInterval(() => { const recentEvents = globalEventManager.getRecentEvents(5); if (recentEvents.length > 0) { console.log("\n📊 最近的事件:"); recentEvents.forEach(event => { console.log(` ${event.type} (${event.source} -> ${event.target || '广播'}) [${new Date(event.timestamp!).toLocaleTimeString()}]`); }); console.log(`📝 已注册的 Workers: ${globalEventManager.getRegisteredWorkers().join(', ')}\n`); } }, 5000); // 处理 Ctrl+C 退出 Deno.addSignalListener("SIGINT", () => { console.log("\n📋 最终事件日志:"); const allEvents = globalEventManager.getEventLog(); allEvents.forEach(event => { console.log(` ${event.type} (${event.source} -> ${event.target || '广播'}) [${new Date(event.timestamp!).toLocaleTimeString()}]`); }); testWorker.terminate(); console.log("🔚 测试结束"); Deno.exit(0); }); console.log("🎯 事件系统测试已启动,按 Ctrl+C 退出");