This example demonstrates JAX-RS 2.1 server-sent events support.
The full description how to add support for server-sent events to your application can be found in Jersey User Guide, chapter Server-Sent Events (SSE) Support.
The mapping of the URI path space is presented in the following table:
URI path | Resource class | HTTP methods | Description |
---|---|---|---|
server-sent-events | ServerSentEventsResource | GET | Get entire EventOutput with all messages |
server-sent-events | ServerSentEventsResource | POST | Insert a new message in EventOutput |
server-sent-events | ServerSentEventsResource | DELETE | Reset EventOutput |
server-sent-events/domains/{id} | BlockingPostChatResource | POST | Generate several messages with a delay in EventOutput and return it |
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-jaxrs/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
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.