MessageEvent interfaceMessages in server-sent events, web sockets, cross-document
  messaging, channel messaging, and broadcast channels use the
  MessageEvent interface for their message
  events:
Support in all current engines.
[Exposed=(Window,Worker,AudioWorklet)]
interface MessageEvent : Event {
  constructor(DOMString type, optional MessageEventInit eventInitDict = {});
  readonly attribute any data;
  readonly attribute USVString origin;
  readonly attribute DOMString lastEventId;
  readonly attribute MessageEventSource? source;
  readonly attribute FrozenArray<MessagePort> ports;
  undefined initMessageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any data = null, optional USVString origin = "", optional DOMString lastEventId = "", optional MessageEventSource? source = null, optional sequence<MessagePort> ports = []);
};
dictionary MessageEventInit : EventInit {
  any data = null;
  USVString origin = "";
  DOMString lastEventId = "";
  MessageEventSource? source = null;
  sequence<MessagePort> ports = [];
};
typedef (WindowProxy or MessagePort or ServiceWorker) MessageEventSource;dataReturns the data of the message.
originReturns the origin of the message, for server-sent events and cross-document messaging.
lastEventIdReturns the last event ID string, for server-sent events.
sourceReturns the WindowProxy of the source window, for cross-document
    messaging, and the MessagePort being attached, in the connect event fired at
    SharedWorkerGlobalScope objects.
portsReturns the MessagePort array sent with the message, for cross-document
    messaging and channel messaging.
Support in all current engines.
The data
  attribute must return the value it was initialized to. It represents the message being sent.
Support in all current engines.
The origin attribute must return the value it was
  initialized to. It represents, in server-sent events and cross-document
  messaging, the origin of the document that
  sent the message (typically the scheme, hostname, and port of the document, but not its path or
  fragment).
Support in all current engines.
The lastEventId attribute must return the value it
  was initialized to. It represents, in server-sent events, the last event ID string of the event source.
Support in all current engines.
The source attribute must return the value it was
  initialized to. It represents, in cross-document messaging, the
  WindowProxy of the browsing context of the Window object
  from which the message came; and in the connect events used by shared workers, the newly connecting
  MessagePort.
Support in all current engines.
The ports
  attribute must return the value it was initialized to. It represents, in cross-document
  messaging and channel messaging, the MessagePort array being
  sent.
The initMessageEvent() method must initialize
  the event in a manner analogous to the similarly-named initEvent() method. [DOM]
Various APIs (e.g., WebSocket, EventSource) use the
  MessageEvent interface for their message event
  without using the MessagePort API.