|  | [//]: # " Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved. " | 
|  | [//]: # " " | 
|  | [//]: # " This program and the accompanying materials are made available under the " | 
|  | [//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at " | 
|  | [//]: # " http://www.eclipse.org/org/documents/edl-v10.php. " | 
|  | [//]: # " " | 
|  | [//]: # " SPDX-License-Identifier: BSD-3-Clause " | 
|  |  | 
|  | Server-Sent Events (SSE) Example | 
|  | ================================ | 
|  |  | 
|  | 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](https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/sse.html). | 
|  |  | 
|  | Contents | 
|  | -------- | 
|  |  | 
|  | 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 | 
|  |  | 
|  | 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-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 | 
|  | ``` | 
|  |  | 
|  | 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](http://grizzly.java.net/) container. |