1. 9 Communication
    1. 9.1 The MessageEvent interface

9 Communication

9.1 The MessageEvent interface

Messages in server-sent events, web sockets, cross-document messaging, channel messaging, and broadcast channels use the MessageEvent interface for their message events:

MessageEvent

Support in all current engines.

Firefox4+Safari4+Chrome1+
Opera10.6+Edge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS3+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android11+
[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;

  void 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;
event . data

Returns the data of the message.

event . origin

Returns the origin of the message, for server-sent events and cross-document messaging.

event . lastEventId

Returns the last event ID string, for server-sent events.

event . source

Returns the WindowProxy of the source window, for cross-document messaging, and the MessagePort being attached, in the connect event fired at SharedWorkerGlobalScope objects.

event . ports

Returns the MessagePort array sent with the message, for cross-document messaging and channel messaging.

MessageEvent/data

Support in all current engines.

Firefox4+Safari4+Chrome1+
OperaYesEdge79+
Edge (Legacy)12+Internet Explorer9+
Firefox AndroidYesSafari iOS3+Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes

The data attribute must return the value it was initialized to. It represents the message being sent.

MessageEvent/origin

Support in all current engines.

Firefox4+Safari4+Chrome1+
OperaYesEdge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS3+Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes

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).

MessageEvent/lastEventId

Support in all current engines.

Firefox4+Safari4+Chrome1+
OperaYesEdge79+
Edge (Legacy)17+Internet Explorer9+
Firefox AndroidYesSafari iOS3+Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes

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.

MessageEvent/source

Support in all current engines.

Firefox55+SafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerNo
Firefox Android55+Safari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes

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.

MessageEvent/ports

Support in all current engines.

Firefox4+Safari4+Chrome1+
OperaYesEdge79+
Edge (Legacy)12+Internet Explorer9+
Firefox AndroidYesSafari iOS3+Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes

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.