ExtendableMessageEvent: ports property
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
Note: This feature is only available in Service Workers.
The ports
read-only property of the
ExtendableMessageEvent
interface returns the array containing the
MessagePort
objects representing the ports of the associated message
channel (the channel the message is being sent through.)
Value
An array of MessagePort
objects.
Examples
When the following code is used inside a service worker to respond to a push messages
by sending the data received via PushMessageData
to the main context via
a channel message, the event
object of onmessage
will be a 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];
};
Specifications
Specification |
---|
Service Workers # extendablemessage-event-ports |
Browser compatibility
BCD tables only load in the browser