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

相关推荐
haluhalu.16 小时前
Agent = LLM + 上下文 + 工具(含观察 / 动作空间、ReAct 循环)
前端·javascript·人工智能·python·react.js·机器学习·个人开发
mldong16 小时前
给 Django Admin 加审批流:一行前端代码没写,298 行接上工作流引擎
后端·python·架构
子兮曰1 天前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
paopaokaka_luck1 天前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787051 天前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
IMPYLH1 天前
HTML 的 <video> 元素
前端·html
小白学大数据1 天前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
茵Cindy1 天前
AI+HR智能体架构如何落地?从入口到生态底座的工程实现
人工智能·架构·ai+hr
weixin_448119941 天前
Datawhale Easy Data × AI:构建知识与记忆驱动的 Agent笔记8
人工智能·笔记·react.js
濮水大叔1 天前
Cabloy 双引擎架构详解:Vona 与 Zova 是如何协作的
typescript·node.js·全栈