web worker使用总结(包含多个worker)

web worker在项目中使用的整体架构图:

  1. websocketWorker - 业务数据上报,及把数据通过事件把数据发给主线程;

2.CommandWorker - 处理复杂、耗时等业务数据,把处理结果通过事件发送给主线程;

3.使用MessageChannel实现websocketWorker和CommandWorker之间的数据传递(websocketWorker收到的数据直接传给CommandWorker);

数据流程图:

核心组件说明

1. WebSocket Worker (websocketWorker.ts)

  • **职责**: WebSocket 连接管理、消息接收解析、心跳检测

  • **核心类**: `Websocket`

  • **关键功能**:

  • TLV 格式消息解析

  • 通过 MessagePort 与 Command Worker 通信

2. Command Worker (commandWorker.ts)

  • **职责**: 业务指令处理、数据模型管理、API 请求

  • **核心类**: `CommonWorker`

  • **关键功能**:

  • 指令类型识别和分发

  • 业务数据模型管理

  • 多种指令处理器协调

3. 指令处理器

  • **FuncCommand**: 处理功能按键指令

4. 通信机制

  • **MessageChannel**: Worker 间通信通道

  • **postMessage**: 主线程与 Worker 通信

  • **MessagePort**: Worker 间直接通信

关键流程说明

初始化流程

  1. 主线程创建两个 Worker 实例

  2. 创建 MessageChannel 建立 Worker 间通信

  3. WebSocket Worker 初始化连接

  4. Command Worker 初始化配置和指令处理器

消息处理流程

  1. WebSocket 服务器发送 TLV 格式消息

  2. WebSocket Worker 解析消息

  3. 根据 tag 类型分发到 Command Worker 或主线程

  4. Command Worker 识别指令类型并分发到对应处理器

  5. 处理器执行业务逻辑并调用 API

  6. 更新数据模型并通知主线程

相关推荐
LabVIEW开发6 小时前
LabVIEW QMH 队列消息处理架构
架构·labview·labview知识·labview功能·labview程序
代码搬运媛6 小时前
Jest 测试框架详解与实现指南
前端
counterxing6 小时前
Agent 跑起来之后,难的是复用、观测和评测
node.js·agent·ai编程
counterxing7 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq7 小时前
windows下nginx的安装
linux·服务器·前端
rising start7 小时前
二、全面理解MySQL架构
mysql·架构
之歆8 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜8 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
麦客奥德彪8 小时前
Android Skills
架构·ai编程
Maimai108088 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly