当前位置: 首页 > news >正文

如何用 port.start 开启共享子线程与主页面的长连接通道

port.start() 并非开启长连接的方法,而是启用 MessagePort 消息接收队列的必要操作,需在获取 port 后显式调用以开始接收消息,尤其在未设置 onmessage 时;它属于 MessageChannel 通信机制,不涉及网络连接。port.start 并不是标准 Web API 或主流框架(如 Chrome 扩展、Web Workers、WebSocket)中用于开启“共享子线程与主页面长连接通道”的原生方法。它不存在于浏览器环境的标准 JavaScript API 中,也不直接属于 MessageChannel、Worker、SharedWorker 或 Port 接口的合法调用方式。你可能混淆了以下几种常见场景中的概念:? 正确理解:MessagePort 与 start() 方法在基于 MessageChannel 的跨上下文通信中(例如主线程 ? Worker、iframe ? 主页、Service Worker ? 页面),确实存在 port.start(),但它不是用来“开启长连接”,而是启用端口的消息队列,用于手动控制消息接收时机(尤其在 onmessage 未设置时)。?? 使用前提你已通过 new MessageChannel() 创建通道;已将 port1 或 port2 转移(postMessage(..., [port]))到另一上下文(如 Worker);接收方拿到 MessagePort 对象后,需显式调用 port.start() 才能开始接收消息(否则消息会积压或丢失)。?? 示例:主线程 ? Web Worker 的可靠通信// 主线程const worker = new Worker('worker.js');const channel = new MessageChannel();// 启动 worker,并传入 port2worker.postMessage({ type: 'INIT_PORT' }, [channel.port2]);// 主线程监听 port1channel.port1.onmessage = (e) => { console.log('收到 worker 消息:', e.data);};// ?? 关键:必须调用 start() 启用接收(尤其在未设 onmessage 之前)channel.port1.start();// worker.jslet sharedPort;self.onmessage = function(e) { if (e.data.type === 'INIT_PORT') { // 接收主线程传来的 port sharedPort = e.ports[0]; sharedPort.onmessage = (e) => { console.log('Worker 收到:', e.data); sharedPort.postMessage('已处理: ' + e.data); }; // ? 必须 start() 才能开始接收 sharedPort.start(); }};? 注意:若你设置了 port.onmessage,现代浏览器通常会自动隐式调用 start();但显式调用是推荐做法,尤其在兼容性要求高或逻辑复杂时。 Tellers AI Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

http://www.jsqmd.com/news/643793/

相关文章:

  • 从吐槽到规则:Karpathy 如何给 AI 编程立规矩
  • 033.API服务优化:异步处理、批处理、GPU内存管理
  • MTools企业应用:客服中心智能语音质检系统
  • a 进制转 b 进制(2~16)
  • AIVideo新手入门:手把手教你配置镜像,快速开启AI视频创作
  • SAP MM DIEN类型服务料号的采购
  • 3分钟解密网易云音乐NCM文件:ncmdump技术解析与应用指南
  • C++ 继承与派生入门:从基础到实践
  • 有实力的预制直埋保温管厂家探讨,生产工艺成熟度深度剖析 - mypinpai
  • ncmdumpGUI完全指南:5分钟掌握网易云音乐NCM文件转换技巧
  • 番茄小说下载器终极指南:一键将在线小说转为EPUB电子书
  • 3分钟快速上手:智慧树自动刷课插件的完整使用指南
  • 财务主管警示:企业云支出浪费比例或高达30%
  • NBTExplorer:Minecraft玩家的终极NBT编辑器完全指南
  • 八股(四)JVM
  • Window Resizer完整指南:免费工具解决Windows窗口无法调整的难题
  • 2026年带压封堵施工公司哪家性价比高,这些品牌值得考虑 - myqiye
  • 3个实用技巧:如何用ncmdump轻松解密网易云音乐NCM文件
  • 5个高级配置技巧:如何深度优化NVIDIA Profile Inspector
  • 高效提升游戏性能:开源帧率优化工具完整指南
  • RAG系统必看!混合检索、关键词、语义一次讲清,生产级方案选型指南
  • ffmpeg的安装与配置
  • Joy-Con手柄修复指南:3个高效技巧彻底解决漂移和连接问题
  • 2026年3月优秀的波纹管源头厂家推荐,七孔梅花管/MPP电力管/PE硅芯管/雄安硅芯管,波纹管源头厂家推荐 - 品牌推荐师
  • 8分钟掌握网易云音乐NCM解密:免费工具让你的音乐随处播放
  • Qwen3-ASR-1.7B实操手册:如何导出SRT/VTT字幕文件用于Premiere剪辑
  • YOLOv8-pose实战:从零训练一个手部关键点检测模型(保姆级配置文件详解)
  • 共享出行平台:订单匹配与动态定价的策略
  • 多进程环境中解决PHP文件系统锁定问题的方法详解
  • HTML----列表与表格