You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何SharedWorker不为每个客户端仅暴露一个端口?

SharedWorker 多端口相关疑问

基础示例

先看一段 SharedWorker 侧接收客户端连接的示例代码(通常放在类似 worker.js 文件中运行):

onconnect = evt => {
  
  // evt 对应客户端的连接请求
  
  const port = evt.ports[0];
  port.onmessage = msg => {
    // msg 是客户端发来的消息内容
    // 可以通过 port.postMessage 给客户端回复
  };
  
};

核心疑问

  1. 为什么 evt.ports 是一个数组(可能包含多个端口)?SharedWorker 会在什么场景下给单个客户端连接提供多个端口?这些多端口代表什么含义?是连接同一客户端的不同通信通道吗?多端口能否在操作系统层面提升通信带宽?

  2. 上面的示例代码只处理了数组中的第一个端口,是不是应该始终改用下面这种遍历所有端口的写法?

onconnect = evt => {
  
  // evt 对应客户端的连接请求
    
  for (const port of evt.ports) {
    
    // 为每个端口监听消息
    port.onmessage = msg => {
      // msg 是客户端发来的消息内容
      // 可以通过 port.postMessage 给客户端回复
    };
    
  }
  
};

内容的提问来源于stack exchange,提问作者Gershom Maes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:00:58