bugl
bugl
HomeLearnPatternsPathsSearchPremium
HomeLearnPatternsPaths
Learn/HTML/Graphics, Media, and Browser Features
HTML•Graphics, Media, and Browser Features

HTML Server-Sent Events API

The Server-Sent Events (SSE) API enables pushing messages/updates from a server to the web page via HTTP connection.

Server-Sent Events - One Way Messaging

A server-sent event is when a web page automatically gets messages/updates from a server.

Normally, a web page has to request data from the server, but with server-sent events, the updates are pushed automatically.

Examples: Facebook/Twitter updates, stock market updates, news feeds, sport results, etc.

Browser Support

The numbers in the table specify the first browser version that fully support the Server-Sent Events API.

API
SSE6.079.06.05.011.5

Receive Server-Sent Event Notifications

The EventSource object is used to receive server-sent event notifications:

Example

Formatted code
  <script>
const x = document.getElementById("result");

  // Check browser support for SSE
if(typeof(EventSource)
  !== "undefined") {
  var source = new EventSource("demo_sse.php");

  source.onmessage = function(event) {
    x.innerHTML +=
  event.data + "<br>";
  };
} else {
  x.innerHTML = "Sorry,
  no support for server-sent events.";
}
</script>

Live preview

Example explained

  • Create a new EventSource object, and specify the URL of the page sending the updates (in this example "demo_sse.php")
  • Each time an update is received, the onmessage event occurs
  • When an onmessage event occurs, put the received data into the element with id="result"

Check Browser Support

In the tryit example above there were some extra lines of code to check browser support for server-sent events:

if(typeof(EventSource) !== "undefined") {
 // Yes! Server-sent events support!
 //
Some code.....
 }
 else {
 // Sorry! No server-sent events support..
 }

Server-Side Code Example

For the example above to work, you need a server capable of sending data updates (like PHP or ASP).

The server-side event stream syntax is simple. Set the "Content-Type" header to "text/event-stream". Now you can start sending event streams.

Code in PHP (demo_sse.php):

<?php
header('Content-Type: text/event-stream');
 header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>

Code in ASP (VB) (demo_sse.asp):

<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
 Response.Write("data: The server time is: " & now())
Response.Flush()
%>

Code explained

  • Set the "Content-Type" header to "text/event-stream"
  • Specify that the page should not cache
  • Output the data to send ( Always start with "data: ")
  • Flush the output data back to the web page

The EventSource Object

In the examples above we used the onmessage event to get messages. But other events are also available:

EventsDescription
onopenWhen a connection to the server is opened
onmessageWhen a message is received
onerrorWhen an error occurs

Previous

HTML Web Workers API

Next chapter

Reference and Practice

Start with HTML Interview Preparation

This chapter

Overview
11

Lessons

41m

Read time

1. HTML Canvas Graphics2. HTML Multimedia3. HTML - What is a Web API?4. HTML SVG Graphics5. HTML Audio6. HTML Geolocation API7. HTML Plug-ins8. HTML Drag and Drop API9. HTML Web Storage API10. HTML Web Workers API11. HTML Server-Sent Events API

On this page

Server-Sent Events - One Way MessagingBrowser SupportReceive Server-Sent Event NotificationsCheck Browser SupportServer-Side Code ExampleThe EventSource Object