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
Loading…