SharedWorkerGlobalScope: connect 事件

当新客户端连接到共享工作线程时,connect 事件会在其 SharedWorkerGlobalScope 中触发。

此事件不可取消,也不冒泡。

语法

在诸如 addEventListener() 之类的函数中使用事件名称,或设置事件处理程序属性。

js
addEventListener("connect", (event) => {});

onconnect = (event) => {};

事件类型

事件属性

此接口也继承其父级 Event 的属性。

MessageEvent.data 只读

由消息发送方发送的数据。

MessageEvent.origin 只读

表示消息发送方来源的字符串。

MessageEvent.lastEventId 只读

表示事件唯一 ID 的字符串。

MessageEvent.source 只读

一个 MessageEventSource(可以是 WindowProxyMessagePortServiceWorker 对象),表示消息发送方。

MessageEvent.ports 只读

一个 MessagePort 对象数组,表示与消息发送通道关联的端口(在适当的情况下,例如在通道消息传递中或将消息发送到共享工作线程时)。

示例

此示例展示了一个共享工作线程文件 - 当通过 MessagePort 从主线程连接到工作线程时,onconnect 事件处理程序会触发。事件对象是一个 MessageEvent

连接端口可以通过事件对象的 ports 参数进行引用;此引用可以附加一个 onmessage 处理程序来处理通过端口传入的消息,并且其 postMessage() 方法可用于使用工作线程将消息发回主线程。

js
self.onconnect = (e) => {
  const port = e.ports[0];

  port.onmessage = (e) => {
    const workerResult = `Result: ${e.data[0] * e.data[1]}`;
    port.postMessage(workerResult);
  };

  port.start();
};

有关完整的运行示例,请查看我们的 基本共享工作线程示例 (运行共享工作线程.)

addEventListener 等效项

您也可以使用 addEventListener() 方法设置事件处理程序。

js
self.addEventListener("connect", (e) => {
  const port = e.ports[0];

  port.onmessage = (e) => {
    const workerResult = `Result: ${e.data[0] * e.data[1]}`;
    port.postMessage(workerResult);
  };
});

规范

规范
HTML 标准
# event-workerglobalscope-connect
HTML 标准
# handler-sharedworkerglobalscope-onconnect

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅