Jump to content

Recommended Posts

Posted

Server-Sent Events - One Way Messaging

 

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

 

This was also possible before, but the web page would have to ask if any updates were available. With server-sent events, the updates come automatically.

Example: Facebook/Twitter updates, stock price updates, news feeds, sport results, etc.

Browser Support

 

 

Server-Sent Events are supported in all major browsers, except Internet Explorer.

Receive Server-Sent Event Notifications

 

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

var source=new EventSource("demo_sse.php");
source.onmessage=function(event)
  {
  document.getElementById("result").innerHTML+=event.data + "<br>";
  };

 

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 Server-Sent Events 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: " & 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:

Events 	Description
onopen 	When a connection to the server is opened
onmessage 	When a message is received
onerror 	When an error occurs

 

 

:happyforever: :happyforever: :happyforever: :happyforever:

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock