api-amr/test_events.ts
2025-06-04 19:15:02 +08:00

72 lines
2.2 KiB
TypeScript

// 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 退出");