Skip to content

Latest commit

 

History

History
51 lines (46 loc) · 2.37 KB

README.md

File metadata and controls

51 lines (46 loc) · 2.37 KB

HTTP SSE

Libraries for receiving and sending SSE (Server-Sent-Events). SSE producers and consumers can be defined via annotations. A standalone mode is also provided including SSL support.

Receiving SSE events

If you are using the Bootstrap class all you need to do to receive SSE events is simply annotate a method with @SseConsumer and specify the event-source URI like the following:

@SseConsumer("https://some.server.com/sending/events")
public void consumeEvent(SseEvent sseEvent) {
...
}

Or

if you want to receive SseEvents only using the SseService you can do this simply by calling:

sseService.receive(new URI("https://to.some.server"), sseEvent -> processTheEvent);

Producing SSE events

If you are using the Bootstrap class all you need to do to produce SSE events is simply annotate a method with @SseProducer which must return a SseEvent like the following:

@SseProducer(path = "/sse/produce", maxTimes = -1, delay = 1, unit = TimeUnit.SECONDS)
public SseEvent produceEvent() {
  return new SseEvent.Builder().withData(words[counter++ % 4]).build();
}

This will start the SimpleServer to receive incoming requests, react on the configured URI path, perform the handshake and call the producer method according to the configured delay.

Or

if you implement your own server you can just register your producer class with the ISseRegistry and call the SseService like the following:

sseService.processRequest(socketChannel, sslContext, sseRegistry);

Or

if you want to send SseEvents to an open SocketChannel only using the SseService you can do this simply by calling:

sseService.handshake(socketChannel, sslEngine);
sseService.send(sseEvent, socketChannel, sslEngine);

SSL

To use SSL you only need to supply a SSLContext and/or SSLEngine. This can be easily created using the SslSupport class from the http-common library which is included as dependency with this project.