Package org.springframework.http.codec

# Class ServerSentEventHttpMessageReader

java.lang.Object
org.springframework.http.codec.ServerSentEventHttpMessageReader

All Implemented Interfaces:
  `HttpMessageReader<Object>`

public class ServerSentEventHttpMessageReader extends Object implements HttpMessageReader<Object>
Reader that supports a stream of `ServerSentEvents` and also plain `Objects` which is the same as an `ServerSentEvent` with data only.

Since:
  5.0
Author:
  Sebastien Deleuze, Rossen Stoyanchev, Juergen Hoeller

## Constructor Summary

Constructors
Constructor
Description
`ServerSentEventHttpMessageReader()`
Constructor without a `Decoder`.
`ServerSentEventHttpMessageReader(org.springframework.core.codec.Decoder<?> decoder)`
Constructor with JSON `Decoder` for decoding to Objects.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canRead(org.springframework.core.ResolvableType elementType, MediaType mediaType)`
Whether the given object type is supported by this reader.
`org.springframework.core.codec.Decoder<?>`
`getDecoder()`
Return the configured `Decoder`.
`int`
`getMaxInMemorySize()`
Return the `configured` byte count limit.
`List<MediaType>`
`getReadableMediaTypes()`
Return the list of media types supported by this reader.
`reactor.core.publisher.Flux<Object>`
`read(org.springframework.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String,Object> hints)`
Read from the input message and decode to a stream of objects.
`reactor.core.publisher.Mono<Object>`
`readMono(org.springframework.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String,Object> hints)`
Read from the input message and decode to a single object.
`void`
`setMaxInMemorySize(int byteCount)`
Configure a limit on the maximum number of bytes per SSE event which are buffered before the event is parsed.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.http.codec.HttpMessageReader

`getReadableMediaTypes, read, readMono`

## Constructor Details

### ServerSentEventHttpMessageReader

public ServerSentEventHttpMessageReader()
Constructor without a `Decoder`. In this mode only `String` is supported as the data of an event.

### ServerSentEventHttpMessageReader

public ServerSentEventHttpMessageReader(@Nullable org.springframework.core.codec.Decoder<?> decoder)
Constructor with JSON `Decoder` for decoding to Objects. Support for decoding to `String` event data is built-in.

## Method Details

### getDecoder

@Nullable public org.springframework.core.codec.Decoder<?> getDecoder()
Return the configured `Decoder`.

### setMaxInMemorySize

public void setMaxInMemorySize(int byteCount)
Configure a limit on the maximum number of bytes per SSE event which are buffered before the event is parsed.

Note that the `data decoder`, if provided, must also be customized accordingly to raise the limit if necessary in order to be able to parse the data portion of the event.

By default this is set to 256K.

Parameters:
  `byteCount` - the max number of bytes to buffer, or -1 for unlimited
Since:
  5.1.13

### getMaxInMemorySize

public int getMaxInMemorySize()
Return the `configured` byte count limit.

Since:
  5.1.13

### getReadableMediaTypes

public List<MediaType> getReadableMediaTypes()
Description copied from interface: `HttpMessageReader`
Return the list of media types supported by this reader. The list may not apply to every possible target element type and calls to this method should typically be guarded via `canWrite(elementType, null)`. The list may also exclude media types supported only for a specific element type. Alternatively, use `HttpMessageReader.getReadableMediaTypes(ResolvableType)` for a more precise list.

Specified by:
  `getReadableMediaTypes` in interface `HttpMessageReader<Object>`
Returns:
  the general list of supported media types

### canRead

public boolean canRead(org.springframework.core.ResolvableType elementType, @Nullable MediaType mediaType)
Description copied from interface: `HttpMessageReader`
Whether the given object type is supported by this reader.

Specified by:
  `canRead` in interface `HttpMessageReader<Object>`
Parameters:
  `elementType` - the type of object to check
  `mediaType` - the media type for the read (possibly `null`)
Returns:
  `true` if readable, `false` otherwise

### read

public reactor.core.publisher.Flux<Object> read(org.springframework.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String,Object> hints)
Description copied from interface: `HttpMessageReader`
Read from the input message and decode to a stream of objects.

Specified by:
  `read` in interface `HttpMessageReader<Object>`
Parameters:
  `elementType` - the type of objects in the stream which must have been previously checked via `HttpMessageReader.canRead(ResolvableType, MediaType)`
  `message` - the message to read from
  `hints` - additional information about how to read and decode the input
Returns:
  the decoded stream of elements

### readMono

public reactor.core.publisher.Mono<Object> readMono(org.springframework.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String,Object> hints)
Description copied from interface: `HttpMessageReader`
Read from the input message and decode to a single object.

Specified by:
  `readMono` in interface `HttpMessageReader<Object>`
Parameters:
  `elementType` - the type of objects in the stream which must have been previously checked via `HttpMessageReader.canRead(ResolvableType, MediaType)`
  `message` - the message to read from
  `hints` - additional information about how to read and decode the input
Returns:
  the decoded object