Top Description Inners Fields Constructors Methods
org.springframework.web.servlet.mvc.method.annotation

public Class SseEmitter

extends ResponseBodyEmitter
Class Inheritance
Imports
java.io.IOException, java.nio.charset.StandardCharsets, java.util.Collections, .LinkedHashSet, .Set, java.util.concurrent.locks.Lock, .ReentrantLock, org.springframework.http.HttpHeaders, .MediaType, org.springframework.http.server.ServerHttpResponse, org.springframework.lang.Nullable, org.springframework.util.ObjectUtils, .StringUtils

A specialization of ResponseBodyEmitter for sending Server-Sent Events.
Authors
Rossen Stoyanchev, Juergen Hoeller, Sam Brannen, Brian Clozel
Since
4.2

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static interface
SseEmitter.SseEventBuilder

A builder for an SSE event.

private static class
SseEmitter.SseEventBuilderImpl

Default implementation of SseEventBuilder.

Field Summary

Modifier and TypeField and Description
private static final MediaType
private final Lock
writeLock

Guards access to write operations on the response.

Constructor Summary

AccessConstructor and Description
public
SseEmitter()

Create a new SseEmitter instance.

public
SseEmitter(Long
the timeout value in milliseconds
timeout
)

Create a SseEmitter with a custom timeout value.

Method Summary

Modifier and TypeMethod and Description
public static SseEmitter.SseEventBuilder
protected void
extendResponse(ServerHttpResponse outputMessage)

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.extendResponse.

Invoked after the response is updated with the status code and headers, if the ResponseBodyEmitter is wrapped in a ResponseEntity, but before the response is committed, i.e. before the response body has been written to.

public void
send(Object
the object to write
object
)

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send.

Send the object formatted as a single SSE "data" line.

public void
send(Object
the object to write
object
,
MediaType
a MediaType hint for selecting an HttpMessageConverter
mediaType
)

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send.

Send the object formatted as a single SSE "data" line.

public void
send(SseEmitter.SseEventBuilder
a builder for an SSE formatted event.
builder
)

Send an SSE event prepared with the given builder.

public String
toString()

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.toString.

Returns a string representation of the object.

Inherited from org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter:
completecompleteWithErrorgetTimeoutinitializeinitializeWithErroronCompletiononErroronTimeoutsend

Field Detail

TEXT_PLAINback to summary
private static final MediaType TEXT_PLAIN
writeLockback to summary
private final Lock writeLock

Guards access to write operations on the response.

Constructor Detail

SseEmitterback to summary
public SseEmitter()

Create a new SseEmitter instance.

SseEmitterback to summary
public SseEmitter(Long timeout)

Create a SseEmitter with a custom timeout value.

By default not set in which case the default configured in the MVC Java Config or the MVC namespace is used, or if that's not set, then the timeout depends on the default of the underlying server.

Parameters
timeout:Long

the timeout value in milliseconds

Since
4.2.2

Method Detail

eventback to summary
public static SseEmitter.SseEventBuilder event()
extendResponseback to summary
protected void extendResponse(ServerHttpResponse outputMessage)

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.extendResponse.

Doc from org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.extendResponse.

Invoked after the response is updated with the status code and headers, if the ResponseBodyEmitter is wrapped in a ResponseEntity, but before the response is committed, i.e. before the response body has been written to.

The default implementation is empty.

Annotations
@Override
sendback to summary
public void send(Object object) throws IOException

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send.

Send the object formatted as a single SSE "data" line. It's equivalent to:

// static import of SseEmitter.*

SseEmitter emitter = new SseEmitter();
emitter.send(event().data(myObject));

Please, see parent Javadoc for important notes on exception handling.

Parameters
object:Object

the object to write

Annotations
@Override
Exceptions
IOException:
raised when an I/O error occurs
IllegalStateException:
wraps any other errors
sendback to summary
public void send(Object object, MediaType mediaType) throws IOException

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send.

Send the object formatted as a single SSE "data" line. It's equivalent to:

// static import of SseEmitter.*

SseEmitter emitter = new SseEmitter();
emitter.send(event().data(myObject, MediaType.APPLICATION_JSON));

Please, see parent Javadoc for important notes on exception handling.

Parameters
object:Object

the object to write

mediaType:MediaType

a MediaType hint for selecting an HttpMessageConverter

Annotations
@Override
Exceptions
IOException:
raised when an I/O error occurs
sendback to summary
public void send(SseEmitter.SseEventBuilder builder) throws IOException

Send an SSE event prepared with the given builder. For example:

// static import of SseEmitter
SseEmitter emitter = new SseEmitter();
emitter.send(event().name("update").id("1").data(myObject));
Parameters
builder:SseEmitter.SseEventBuilder

a builder for an SSE formatted event.

Exceptions
IOException:
raised when an I/O error occurs
toStringback to summary
public String toString()

Overrides org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
org.springframework.web.servlet.mvc.method.annotation back to summary

public Interface SseEmitter.SseEventBuilder

Known Direct Implementers
org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilderImpl

A builder for an SSE event.

Method Summary

Modifier and TypeMethod and Description
public Set<ResponseBodyEmitter.DataWithMediaType>
build()

Return one or more Object-MediaType pairs to write via send(Object, MediaType).

public SseEmitter.SseEventBuilder
comment(String comment)

Add an SSE "comment" line.

public SseEmitter.SseEventBuilder
data(Object object)

Add an SSE "data" line.

public SseEmitter.SseEventBuilder
data(Object object, MediaType mediaType)

Add an SSE "data" line.

public SseEmitter.SseEventBuilder
id(String id)

Add an SSE "id" line.

public SseEmitter.SseEventBuilder
name(String eventName)

Add an SSE "event" line.

public SseEmitter.SseEventBuilder
reconnectTime(long reconnectTimeMillis)

Add an SSE "retry" line.

Method Detail

buildback to summary
public Set<ResponseBodyEmitter.DataWithMediaType> build()

Return one or more Object-MediaType pairs to write via send(Object, MediaType).

Since
4.2.3
commentback to summary
public SseEmitter.SseEventBuilder comment(String comment)

Add an SSE "comment" line.

databack to summary
public SseEmitter.SseEventBuilder data(Object object)

Add an SSE "data" line.

databack to summary
public SseEmitter.SseEventBuilder data(Object object, MediaType mediaType)

Add an SSE "data" line.

idback to summary
public SseEmitter.SseEventBuilder id(String id)

Add an SSE "id" line.

nameback to summary
public SseEmitter.SseEventBuilder name(String eventName)

Add an SSE "event" line.

reconnectTimeback to summary
public SseEmitter.SseEventBuilder reconnectTime(long reconnectTimeMillis)

Add an SSE "retry" line.

org.springframework.web.servlet.mvc.method.annotation back to summary

private Class SseEmitter.SseEventBuilderImpl

extends Object
implements SseEventBuilder
Class Inheritance
  • java.lang.Object
  • org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilderImpl
All Implemented Interfaces
org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder

Default implementation of SseEventBuilder.

Field Summary

Modifier and TypeField and Description
private final Set<ResponseBodyEmitter.DataWithMediaType>
private StringBuilder

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv SseEmitter.SseEventBuilderImpl
append(String text)

pack-priv SseEmitter.SseEventBuilderImpl
append(char ch)

public Set<ResponseBodyEmitter.DataWithMediaType>
public SseEmitter.SseEventBuilder
public SseEmitter.SseEventBuilder
public SseEmitter.SseEventBuilder
public SseEmitter.SseEventBuilder
public SseEmitter.SseEventBuilder
public SseEmitter.SseEventBuilder
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

dataToSendback to summary
private final Set<ResponseBodyEmitter.DataWithMediaType> dataToSend
sbback to summary
private StringBuilder sb
Annotations
@Nullable

Constructor Detail

SseEventBuilderImplback to summary
private SseEventBuilderImpl()

Method Detail

appendback to summary
pack-priv SseEmitter.SseEventBuilderImpl append(String text)
appendback to summary
pack-priv SseEmitter.SseEventBuilderImpl append(char ch)
buildback to summary
public Set<ResponseBodyEmitter.DataWithMediaType> build()

Implements org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.build.

Doc from org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.build.

Return one or more Object-MediaType pairs to write via send(Object, MediaType).

Annotations
@Override
commentback to summary
public SseEmitter.SseEventBuilder comment(String comment)

Implements org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.comment.

Doc from org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.comment.

Add an SSE "comment" line.

Annotations
@Override
databack to summary
public SseEmitter.SseEventBuilder data(Object object)

Implements org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.data.

Doc from org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.data.

Add an SSE "data" line.

Annotations
@Override
databack to summary
public SseEmitter.SseEventBuilder data(Object object, MediaType mediaType)

Implements org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.data.

Doc from org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.data.

Add an SSE "data" line.

Annotations
@Override
idback to summary
public SseEmitter.SseEventBuilder id(String id)

Implements org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.id.

Doc from org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.id.

Add an SSE "id" line.

Annotations
@Override
nameback to summary
public SseEmitter.SseEventBuilder name(String name)

Implements org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.name.

Doc from org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.name.

Add an SSE "event" line.

Annotations
@Override
reconnectTimeback to summary
public SseEmitter.SseEventBuilder reconnectTime(long reconnectTimeMillis)

Implements org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.reconnectTime.

Doc from org.springframework.web.servlet.mvc.method.annotation.SseEmitter.SseEventBuilder.reconnectTime.

Add an SSE "retry" line.

Annotations
@Override
saveAppendedTextback to summary
private void saveAppendedText()