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. 更新数据模型并通知主线程

相关推荐
烈风逍遥4 分钟前
第七篇:提示词模板管理与 Agent 提示词编排
前端·人工智能·后端
Amos_Web14 分钟前
Rspack 源码解析(十二):JavaScript Chunk 是如何被渲染出来的
前端·rust·源码
前端探险家Rick23 分钟前
React Native 二级弹出面板 + 键盘适配:从踩坑到正确方案
前端
用户9210802628626 分钟前
MCP 是什么?用 Figma MCP 辅助还原 Vue 页面
前端
用户9210802628627 分钟前
用 Figma MCP 还原 Vue 页面时,我遇到的三个问题
前端
修罗王27 分钟前
从 React Bits 到 Vue/Svelte Bits:重新定义前端“视觉表达层“
前端
JQweryuiop28 分钟前
中小型游戏陪练工作室数字化管理实践:基于七彩屋电竞护航小程序订单、履约与绩效系统的落地复盘
大数据·游戏·小程序·架构
kiros_wang29 分钟前
Notification 本地通知:定时消息、点击路由跳转、桌面角标适配
前端
LONGZETECH35 分钟前
一线职教实测:风光 580 汽车故障诊断仿真系统,破解实车实训四大核心痛点
人工智能·学习·安全·架构·汽车