72 lines
2.2 KiB
TypeScript
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 退出");
|