Using Server-sent Events

In the browser, An EventSource object can be used to receive server-sent event notifications. On creation, the object is connected to the source of notifications (in our case, the Content Store's SSE link, http://host-ip-address/webservice/escenic/changelog/sse. It has an onmessage event that is fired every time a notification is received. So all you need to do is write an event function that responds appropriately to the notifications received. For example:

var source = new EventSource("http://host-ip-address/webservice/escenic/changelog/sse");
source.onmessage = function(event) {
    // handle the SSE notification here:
    // contains the URL of the updated change log
    // event.lastEventId contains a unique ID

The notifications generated by the Content Store set two event properties:


The URL of the change log that has been updated


A unique ID for the event (not currently used??)

The event data sent by the  Content Store does not directly contain any details of what change has occurred - it simply sends the URL of the change log that has been updated. Your event code can then either ignore the event if the updated change log is not of interest, or send a GET request to the change log URL in order to retrieve the change details and deal with them. The GET request sent to the change log URL is identical to an ordinary polling request, except that in this case, the response is guaranteed to contain some changes.