The EventSource interface is web content's interface to server-sent events. An EventSource instance opens a persistent connection to an HTTP server, which sends events in text/event-stream format. The connection remains open until closed by calling EventSource.close().

Once the connection is opened, incoming messages from the server are delivered to your code in the form of message events.

Unlike WebSockets, server-sent events are unidirectional; that is, data messages are delivered in one direction, from the server to the client (such as a user's web browser). That makes them an excellent choice when there's no need to send data from the client to the server in message form. For example, EventSource is a useful approach for handling things like social media status updates, news feeds, or delivering data into a client-side storage mechanism like IndexedDB or web storage.

Constructor

EventSource()
Creates a new EventSource to handle receiving server-sent events from a specified URL, optionally in credentials mode.

Properties

This interface also inherits properties from its parent, EventTarget.

EventSource.readyState Read only
A number representing the state of the connection. Possible values are CONNECTING (0), OPEN (1), or CLOSED (2).
EventSource.url Read only
A DOMString representing the URL of the source.
EventSource.withCredentials Read only
A Boolean indicating whether the EventSource object was instantiated with cross-origin (CORS) credentials set (true), or not (false, the default).

Event handlers

EventSource.onerror
Is an EventHandler called when an error occurs and the error event is dispatched on an EventSource object.
EventSource.onmessage
Is an EventHandler called when a message event is received, that is when a message is coming from the source.
EventSource.onopen
Is an EventHandler called when an open event is received, that is when the connection was just opened.

Methods

This interface also inherits methods from its parent, EventTarget.

EventSource.close()
Closes the connection, if any, and sets the readyState attribute to CLOSED. If the connection is already closed, the method does nothing.

Examples

In this basic example, an EventSource is created to receive events from the server; a page with the name "sse.php" is responsible for generating the events.

var evtSource = new EventSource('sse.php');
var eventList = document.querySelector('ul');

evtSource.onmessage = function(e) {
  var newElement = document.createElement("li");

  newElement.textContent = "message: " + e.data;
  eventList.appendChild(newElement);
}

Each received event causes our EventSource object's onmessage event handler to be run. It, in turn, creates a new <li> element and writes the message's data into it, then appends the new element to the list element already in the document.

Note: You can find a full example on GitHub — see Simple SSE demo using PHP.

Specifications

Specification Status Comment
HTML Living Standard
The definition of 'EventSource' in that specification.
Living Standard  

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Basic supportChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?
Available in workersChrome Full support YesEdge No support NoFirefox Full support 53IE No support NoOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile No support NoFirefox Android Full support 53Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android ?
EventSource() constructorChrome Full support 9Edge No support NoFirefox Full support 6IE No support NoOpera Full support 11Safari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 6Opera Android Full support 11Safari iOS Full support 5Samsung Internet Android ?
closeChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?
onerrorChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?
onmessageChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?
onopenChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?
readyStateChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?
urlChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?
withCredentialsChrome Full support 6Edge No support NoFirefox Full support 6IE No support NoOpera Full support YesSafari Full support 5WebView Android Full support YesChrome Android Full support 18Edge Mobile No support NoFirefox Android Full support 45Opera Android Full support 12Safari iOS Full support 5Samsung Internet Android ?

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown

See also

Document Tags and Contributors

Last updated by: fscholz,