tree: e7f91c70630e249502a7d8c3c3de23c5545bb816 [path history] [tgz]
  1. src/
  2. pom.xml
  3. README.MD
examples/server-sent-events-jersey/README.MD

Server-Sent Events (SSE) Example

This example demonstrates JAX-RS 2.0 server-sent events support sometimes also called one-way publish-subscribe model.

The full description how to create a support for server-sent events can be found in Jersey User Guide, chapter Server-Sent Events (SSE) Support.

It is highly recommended to look at details of SSE API Specification on http://www.w3.org/TR/2009/WD-eventsource-20091029/

Contents

The mapping of the URI path space is presented in the following table:

URI pathResource classHTTP methodsDescription
server-sent-eventsServerSentEventsResourceGETGet entire EventOutput with all messages
server-sent-eventsServerSentEventsResourcePOSTInsert a new message in EventOutput
server-sent-eventsServerSentEventsResourceDELETEReset EventOutput
server-sent-events/domains/{id}BlockingPostChatResourcePOSTGenerate several messages with a delay in EventOutput and return it

Sample Response

A great example of Server-Sent Events is server-sent-events/domains/{id} which sends several messages with a delay 200ms between each other.

curl -v -X POST http://localhost:8080/server-sent-events-jersey/domains/1 -H "Content-Type: text/event-stream"

Look at a console how events are handled one after another in the right order.

event: domain-progress
data: starting domain 1 ...

event: domain-progress
data: 50%

event: domain-progress
data: 60%

event: domain-progress
data: 70%

event: domain-progress
data: 99%

event: domain-progress
data: done

Running the Example

Look at Jersey Documentation to learn how to consume Server-Sent Events using Jersey Client https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/sse.html#sse-client-jaxrs

Run the example as follows:

mvn clean compile exec:java

This deploys the example using Grizzly container.