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.
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
SseEvent
s only using the SseService
you can do this simply by calling:
sseService.receive(new URI("https://to.some.server"), sseEvent -> processTheEvent);
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
SseEvent
s to an open SocketChannel
only using the SseService
you can do this simply by calling:
sseService.handshake(socketChannel, sslEngine);
sseService.send(sseEvent, socketChannel, sslEngine);
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.