Skip to content

ai-republic/http-sse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages