ExtendableMessageEvent: ports property

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有瀏覽器中可用。

注意:此功能僅在 Service Workers 中可用。

portsExtendableMessageEvent 介面的只讀屬性,它返回一個數組,其中包含 MessagePort 物件,這些物件表示關聯訊息通道(傳送訊息所透過的通道)的埠。

一個 MessagePort 物件陣列。

示例

當以下程式碼用於 service worker 中,透過 通道訊息 將透過 PushMessageData 接收到的資料傳送到主上下文以響應推送訊息時,onmessage 的事件物件將是一個 ExtendableMessageEvent

js
let port;

self.addEventListener("push", (e) => {
  const obj = e.data.json();

  if (obj.action === "subscribe" || obj.action === "unsubscribe") {
    port.postMessage(obj);
  } else if (obj.action === "init" || obj.action === "chatMsg") {
    port.postMessage(obj);
  }
});

self.onmessage = (e) => {
  port = e.ports[0];
};

規範

規範
Service Workers
# extendablemessage-event-ports

瀏覽器相容性

另見