Interface SseServer.RequestHandler

Enclosing interface:
SseServer
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

Request/response processing contract for SseServer implementations.

This is used internally by Soklet instances to "talk" to a SseServer via SseServer.initialize(SokletConfig, RequestHandler). It's the responsibility of the SseServer to implement HTTP mechanics: read bytes from the request, write bytes to the response, and so forth.

Most Soklet applications will use Soklet's default SseServer implementation and therefore do not need to implement this interface directly.

Author:
Mark Allen
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Callback to be invoked by a SseServer implementation after it has received a Server-Sent Event Source HTTP request but prior to writing initial data to the HTTP response.
  • Method Details

    • handleRequest

      void handleRequest(@NonNull Request request, @NonNull Consumer<HttpRequestResult> requestResultConsumer)
      Callback to be invoked by a SseServer implementation after it has received a Server-Sent Event Source HTTP request but prior to writing initial data to the HTTP response.

      Note: this method is only invoked during the initial request "handshake" - it is not called for subsequent Server-Sent Event stream writes performed via SseBroadcaster.broadcastEvent(SseEvent) invocations.

      For example, when a Server-Sent Event Source HTTP request is received, you might immediately write an HTTP 200 OK response if all looks good, or reject with a 401 due to invalid credentials. That is the extent of the request-handling logic performed here. The Server-Sent Event stream then remains open and can be written to via SseBroadcaster.broadcastEvent(SseEvent).

      The SseServer is responsible for converting its internal request representation into a Request, which a Soklet instance consumes and performs Soklet application request processing logic.

      The Soklet instance will generate a MarshaledResponse for the request, which it "hands back" to the SseServer to be sent over the wire to the client.

      Parameters:
      request - a Soklet Request representation of the SseServer's internal HTTP request data
      requestResultConsumer - invoked by Soklet when it's time for the SseServer to write HTTP response data to the client