SharedWorkerGlobalScope: connect 事件
当新客户端连接到共享工作线程时,connect
事件会在其 SharedWorkerGlobalScope
中触发。
此事件不可取消,也不冒泡。
语法
在诸如 addEventListener()
之类的函数中使用事件名称,或设置事件处理程序属性。
js
addEventListener("connect", (event) => {});
onconnect = (event) => {};
事件类型
一个 MessageEvent
。继承自 Event
。
事件属性
此接口也继承其父级 Event
的属性。
MessageEvent.data
只读-
由消息发送方发送的数据。
MessageEvent.origin
只读-
表示消息发送方来源的字符串。
MessageEvent.lastEventId
只读-
表示事件唯一 ID 的字符串。
MessageEvent.source
只读-
一个
MessageEventSource
(可以是 WindowProxy、MessagePort
或ServiceWorker
对象),表示消息发送方。 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 表格仅在浏览器中加载