Top Description Fields Constructors Methods
org.springframework.web.socket.config.annotation

public Class SockJsServiceRegistration

extends Object
Class Inheritance
Imports
java.util.ArrayList, .Arrays, .List, org.springframework.lang.Nullable, org.springframework.scheduling.TaskScheduler, org.springframework.util.Assert, .ObjectUtils, org.springframework.web.socket.server.HandshakeInterceptor, org.springframework.web.socket.sockjs.SockJsService, org.springframework.web.socket.sockjs.frame.SockJsMessageCodec, org.springframework.web.socket.sockjs.transport.TransportHandler, .TransportHandlingSockJsService, org.springframework.web.socket.sockjs.transport.handler.DefaultSockJsService

A helper class for configuring SockJS fallback options for use with an org.springframework.web.socket.config.annotation.EnableWebSocket and WebSocketConfigurer setup.
Author
Rossen Stoyanchev
Since
4.0

Field Summary

Modifier and TypeField and Description
private final List<String>
private final List<String>
private String
private Long
private Long
private Integer
private final List<HandshakeInterceptor>
private SockJsMessageCodec
private TaskScheduler
private Boolean
private Integer
private Boolean
private final List<TransportHandler>
private final List<TransportHandler>
private Boolean

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private TransportHandlingSockJsService
protected SockJsService
protected TaskScheduler
getTaskScheduler()

Return the TaskScheduler, if configured.

protected SockJsServiceRegistration
setAllowedOriginPatterns(String... allowedOriginPatterns)

Configure allowed Origin pattern header values.

protected SockJsServiceRegistration
setAllowedOrigins(String... allowedOrigins)

Configure allowed Origin header values.

public SockJsServiceRegistration
setClientLibraryUrl(String clientLibraryUrl)

Transports with no native cross-domain communication (e.g. "eventsource", "htmlfile") must get a simple page from the "foreign" domain in an invisible iframe so that code in the iframe can run from a domain local to the SockJS server.

public SockJsServiceRegistration
setDisconnectDelay(long disconnectDelay)

The amount of time in milliseconds before a client is considered disconnected after not having a receiving connection, i.e. an active connection over which the server can send data to the client.

public SockJsServiceRegistration
setHeartbeatTime(long heartbeatTime)

The amount of time in milliseconds when the server has not sent any messages and after which the server should send a heartbeat frame to the client in order to keep the connection from breaking.

public SockJsServiceRegistration
setHttpMessageCacheSize(int httpMessageCacheSize)

The number of server-to-client messages that a session can cache while waiting for the next HTTP polling request from the client.

public SockJsServiceRegistration
public SockJsServiceRegistration
setMessageCodec(SockJsMessageCodec
the codec to use.
codec
)

The codec to use for encoding and decoding SockJS messages.

public SockJsServiceRegistration
setSessionCookieNeeded(boolean sessionCookieNeeded)

The SockJS protocol requires a server to respond to the initial "/info" request from clients with a "cookie_needed" boolean property that indicates whether the use of a JSESSIONID cookie is required for the application to function correctly, e.g. for load balancing or in Java Servlet containers for the use of an HTTP session.

public SockJsServiceRegistration
setStreamBytesLimit(int streamBytesLimit)

Streaming transports save responses on the client side and don't free memory used by delivered messages.

public SockJsServiceRegistration
setSuppressCors(boolean suppressCors)

This option can be used to disable automatic addition of CORS headers for SockJS requests.

public SockJsServiceRegistration
setTaskScheduler(TaskScheduler scheduler)

A scheduler instance to use for scheduling SockJS heart-beats.

public SockJsServiceRegistration
public SockJsServiceRegistration
public SockJsServiceRegistration
setWebSocketEnabled(boolean webSocketEnabled)

Some load balancers don't support WebSocket.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

allowedOriginPatternsback to summary
private final List<String> allowedOriginPatterns
allowedOriginsback to summary
private final List<String> allowedOrigins
clientLibraryUrlback to summary
private String clientLibraryUrl
Annotations
@Nullable
disconnectDelayback to summary
private Long disconnectDelay
Annotations
@Nullable
heartbeatTimeback to summary
private Long heartbeatTime
Annotations
@Nullable
httpMessageCacheSizeback to summary
private Integer httpMessageCacheSize
Annotations
@Nullable
interceptorsback to summary
private final List<HandshakeInterceptor> interceptors
messageCodecback to summary
private SockJsMessageCodec messageCodec
Annotations
@Nullable
schedulerback to summary
private TaskScheduler scheduler
Annotations
@Nullable
sessionCookieNeededback to summary
private Boolean sessionCookieNeeded
Annotations
@Nullable
streamBytesLimitback to summary
private Integer streamBytesLimit
Annotations
@Nullable
suppressCorsback to summary
private Boolean suppressCors
Annotations
@Nullable
transportHandlerOverridesback to summary
private final List<TransportHandler> transportHandlerOverrides
transportHandlersback to summary
private final List<TransportHandler> transportHandlers
webSocketEnabledback to summary
private Boolean webSocketEnabled
Annotations
@Nullable

Constructor Detail

SockJsServiceRegistrationback to summary
public SockJsServiceRegistration()

Method Detail

createSockJsServiceback to summary
private TransportHandlingSockJsService createSockJsService()
getSockJsServiceback to summary
protected SockJsService getSockJsService()
getTaskSchedulerback to summary
protected TaskScheduler getTaskScheduler()

Return the TaskScheduler, if configured.

Annotations
@Nullable
setAllowedOriginPatternsback to summary
protected SockJsServiceRegistration setAllowedOriginPatterns(String... allowedOriginPatterns)

Configure allowed Origin pattern header values.

Since
5.3.2
setAllowedOriginsback to summary
protected SockJsServiceRegistration setAllowedOrigins(String... allowedOrigins)

Configure allowed Origin header values.

Since
4.1.2
setClientLibraryUrlback to summary
public SockJsServiceRegistration setClientLibraryUrl(String clientLibraryUrl)

Transports with no native cross-domain communication (e.g. "eventsource", "htmlfile") must get a simple page from the "foreign" domain in an invisible iframe so that code in the iframe can run from a domain local to the SockJS server. Since the iframe needs to load the SockJS JavaScript client library, this property allows specifying where to load it from.

By default this is set to point to "https://cdn.jsdelivr.net/sockjs/1.0.0/sockjs.min.js". However, it can also be set to point to a URL served by the application.

Note that it's possible to specify a relative URL in which case the URL must be relative to the iframe URL. For example assuming a SockJS endpoint mapped to "/sockjs", and resulting iframe URL "/sockjs/iframe.html", then the relative URL must start with "../../" to traverse up to the location above the SockJS mapping. In case of a prefix-based Servlet mapping one more traversals may be needed.

setDisconnectDelayback to summary
public SockJsServiceRegistration setDisconnectDelay(long disconnectDelay)

The amount of time in milliseconds before a client is considered disconnected after not having a receiving connection, i.e. an active connection over which the server can send data to the client.

The default value is 5000.

setHeartbeatTimeback to summary
public SockJsServiceRegistration setHeartbeatTime(long heartbeatTime)

The amount of time in milliseconds when the server has not sent any messages and after which the server should send a heartbeat frame to the client in order to keep the connection from breaking.

The default value is 25,000 (25 seconds).

setHttpMessageCacheSizeback to summary
public SockJsServiceRegistration setHttpMessageCacheSize(int httpMessageCacheSize)

The number of server-to-client messages that a session can cache while waiting for the next HTTP polling request from the client. All HTTP transports use this property since even streaming transports recycle HTTP requests periodically.

The amount of time between HTTP requests should be relatively brief and will not exceed the allows disconnect delay (see setDisconnectDelay(long)), 5 seconds by default.

The default size is 100.

setInterceptorsback to summary
public SockJsServiceRegistration setInterceptors(HandshakeInterceptor... interceptors)
setMessageCodecback to summary
public SockJsServiceRegistration setMessageCodec(SockJsMessageCodec codec)

The codec to use for encoding and decoding SockJS messages.

By default Jackson2SockJsMessageCodec is used requiring the Jackson library to be present on the classpath.

Parameters
codec:SockJsMessageCodec

the codec to use.

Since
4.1
setSessionCookieNeededback to summary
public SockJsServiceRegistration setSessionCookieNeeded(boolean sessionCookieNeeded)

The SockJS protocol requires a server to respond to the initial "/info" request from clients with a "cookie_needed" boolean property that indicates whether the use of a JSESSIONID cookie is required for the application to function correctly, e.g. for load balancing or in Java Servlet containers for the use of an HTTP session.

This is especially important for IE 8,9 that support XDomainRequest -- a modified AJAX/XHR -- that can do requests across domains but does not send any cookies. In those cases, the SockJS client prefers the "iframe-htmlfile" transport over "xdr-streaming" in order to be able to send cookies.

The default value is "true" to maximize the chance for applications to work correctly in IE 8,9 with support for cookies (and the JSESSIONID cookie in particular). However, an application can choose to set this to "false" if the use of cookies (and HTTP session) is not required.

setStreamBytesLimitback to summary
public SockJsServiceRegistration setStreamBytesLimit(int streamBytesLimit)

Streaming transports save responses on the client side and don't free memory used by delivered messages. Such transports need to recycle the connection once in a while. This property sets a minimum number of bytes that can be sent over a single HTTP streaming request before it will be closed. After that client will open a new request. Setting this value to one effectively disables streaming and will make streaming transports to behave like polling transports.

The default value is 128K (i.e. 128 * 1024).

setSuppressCorsback to summary
public SockJsServiceRegistration setSuppressCors(boolean suppressCors)

This option can be used to disable automatic addition of CORS headers for SockJS requests.

The default value is "false".

Since
5.3.23
setTaskSchedulerback to summary
public SockJsServiceRegistration setTaskScheduler(TaskScheduler scheduler)

A scheduler instance to use for scheduling SockJS heart-beats.

setTransportHandlerOverridesback to summary
public SockJsServiceRegistration setTransportHandlerOverrides(TransportHandler... handlers)
setTransportHandlersback to summary
public SockJsServiceRegistration setTransportHandlers(TransportHandler... handlers)
setWebSocketEnabledback to summary
public SockJsServiceRegistration setWebSocketEnabled(boolean webSocketEnabled)

Some load balancers don't support WebSocket. This option can be used to disable the WebSocket transport on the server side.

The default value is "true".