SockJsService implementations that provides SockJS
path resolution and handling of static SockJS requests (e.g. "/info", "/iframe.html",
etc). Sub-classes must handle session URLs (i.e. transport-specific requests).
By default, only same origin requests are allowed. Use setAllowedOrigins
to specify a list of allowed origins (a list containing "*" will allow all origins).
| Modifier and Type | Class and Description |
|---|---|
| private class | |
| private class | |
| private static interface |
| Modifier and Type | Field and Description |
|---|---|
| private String | |
| protected final CorsConfiguration | |
| private long | |
| private long | |
| private int | |
| private final AbstractSockJsService. | |
| private final AbstractSockJsService. | |
| protected final Log | |
| private String | |
| private static final long | |
| private static final Random | |
| private boolean | |
| private int | |
| private boolean | |
| private final TaskScheduler | |
| private boolean | |
| private static final String |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| protected void | |
| protected void | |
| protected boolean | |
| public Collection | |
| public Collection | |
| public CorsConfiguration | getCorsConfiguration(HttpServletRequest request)
Implements org. Return a |
| public long | getDisconnectDelay()
Return the amount of time in milliseconds before a client is considered disconnected. |
| public long | getHeartbeatTime()
Return the amount of time in milliseconds when the server has not sent any messages. |
| public int | |
| public String | |
| public String | |
| public int | getStreamBytesLimit()
Return the minimum number of bytes that can be sent over a single HTTP streaming request before it will be closed. |
| public TaskScheduler | |
| protected abstract void | handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler)
Handle request for raw WebSocket communication, i.e. without any SockJS message framing. |
| public final void | handleRequest(ServerHttpRequest
the current request request, ServerHttpResponse the current response response, String the remainder of the path within the SockJS service prefix sockJsPath, WebSocketHandler the handler that will exchange messages with the SockJS client wsHandler)Implements org. This method determines the SockJS path and handles SockJS static URLs. |
| protected abstract void | handleTransportRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler, String sessionId, String transport)
Handle a SockJS session URL (i.e. transport-specific request). |
| private static CorsConfiguration | |
| public boolean | isSessionCookieNeeded()
Return whether the JSESSIONID cookie is required for the application to function. |
| public boolean | |
| protected void | |
| public void | setAllowedOriginPatterns(Collection<String> allowedOriginPatterns)
Alternative to |
| public void | setAllowedOrigins(Collection<String> allowedOrigins)
Set the origins for which cross-origin requests are allowed from a browser. |
| public void | 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 void | setHeartbeatTime(long heartbeatTime)
Specify 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 void | 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 void | |
| public void | setSessionCookieNeeded(boolean sessionCookieNeeded)
The SockJS protocol requires a server to respond to an 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 void | setSockJsClientLibraryUrl(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
|
| public void | setStreamBytesLimit(int streamBytesLimit)
Streaming transports save responses on the client side and don't free memory used by delivered messages. |
| public void | setSuppressCors(boolean suppressCors)
This option can be used to disable automatic addition of CORS headers for SockJS requests. |
| public void | |
| public boolean | |
| private boolean | validatePath(ServerHttpRequest request)
Ensure the path does not contain a file extension, either in the filename (e.g. "/jsonp.bat") or possibly after path parameters ("/jsonp;Setup.bat") which could be used for RFD exploits. |
| protected boolean |
| clientLibraryUrl | back to summary |
|---|---|
| private String clientLibraryUrl | |
| corsConfiguration | back to summary |
|---|---|
| protected final CorsConfiguration corsConfiguration | |
| disconnectDelay | back to summary |
|---|---|
| private long disconnectDelay | |
| heartbeatTime | back to summary |
|---|---|
| private long heartbeatTime | |
| httpMessageCacheSize | back to summary |
|---|---|
| private int httpMessageCacheSize | |
| iframeHandler | back to summary |
|---|---|
| private final AbstractSockJsService. | |
| infoHandler | back to summary |
|---|---|
| private final AbstractSockJsService. | |
| logger | back to summary |
|---|---|
| protected final Log logger | |
| name | back to summary |
|---|---|
| private String name | |
| ONE_YEAR | back to summary |
|---|---|
| private static final long ONE_YEAR | |
| random | back to summary |
|---|---|
| private static final Random random | |
| sessionCookieNeeded | back to summary |
|---|---|
| private boolean sessionCookieNeeded | |
| streamBytesLimit | back to summary |
|---|---|
| private int streamBytesLimit | |
| suppressCors | back to summary |
|---|---|
| private boolean suppressCors | |
| taskScheduler | back to summary |
|---|---|
| private final TaskScheduler taskScheduler | |
| webSocketEnabled | back to summary |
|---|---|
| private boolean webSocketEnabled | |
| XFRAME_OPTIONS_HEADER | back to summary |
|---|---|
| private static final String XFRAME_OPTIONS_HEADER | |
| AbstractSockJsService | back to summary |
|---|---|
| public AbstractSockJsService(TaskScheduler scheduler) | |
| addCacheHeaders | back to summary |
|---|---|
| protected void addCacheHeaders(ServerHttpResponse response) | |
| addNoCacheHeaders | back to summary |
|---|---|
| protected void addNoCacheHeaders(ServerHttpResponse response) | |
| checkOrigin | back to summary |
|---|---|
| protected boolean checkOrigin(ServerHttpRequest request, ServerHttpResponse response, HttpMethod... httpMethods) throws IOException | |
| getAllowedOriginPatterns | back to summary |
|---|---|
| public Collection Return
| |
| getAllowedOrigins | back to summary |
|---|---|
| public Collection Return the
| |
| getCorsConfiguration | back to summary |
|---|---|
| public CorsConfiguration getCorsConfiguration(HttpServletRequest request) Implements org. Doc from org. Return a
| |
| getDisconnectDelay | back to summary |
|---|---|
| public long getDisconnectDelay() Return the amount of time in milliseconds before a client is considered disconnected. | |
| getHeartbeatTime | back to summary |
|---|---|
| public long getHeartbeatTime() Return the amount of time in milliseconds when the server has not sent any messages. | |
| getHttpMessageCacheSize | back to summary |
|---|---|
| public int getHttpMessageCacheSize() Return the size of the HTTP message cache. | |
| getName | back to summary |
|---|---|
| public String getName() Return the unique name associated with this service. | |
| getSockJsClientLibraryUrl | back to summary |
|---|---|
| public String getSockJsClientLibraryUrl() Return he URL to the SockJS JavaScript client library. | |
| getStreamBytesLimit | back to summary |
|---|---|
| public int getStreamBytesLimit() Return the minimum number of bytes that can be sent over a single HTTP streaming request before it will be closed. | |
| getTaskScheduler | back to summary |
|---|---|
| public TaskScheduler getTaskScheduler() A scheduler instance to use for scheduling heart-beat messages. | |
| handleRawWebSocketRequest | back to summary |
|---|---|
| protected abstract void handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler) throws IOException Handle request for raw WebSocket communication, i.e. without any SockJS message framing. | |
| handleRequest | back to summary |
|---|---|
| public final void handleRequest(ServerHttpRequest request, ServerHttpResponse response, String sockJsPath, WebSocketHandler wsHandler) throws SockJsException Implements org. This method determines the SockJS path and handles SockJS static URLs. Session URLs and raw WebSocket requests are delegated to abstract methods.
| |
| handleTransportRequest | back to summary |
|---|---|
| protected abstract void handleTransportRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler, String sessionId, String transport) throws SockJsException Handle a SockJS session URL (i.e. transport-specific request). | |
| initCorsConfiguration | back to summary |
|---|---|
| private static CorsConfiguration initCorsConfiguration() | |
| isSessionCookieNeeded | back to summary |
|---|---|
| public boolean isSessionCookieNeeded() Return whether the JSESSIONID cookie is required for the application to function. | |
| isWebSocketEnabled | back to summary |
|---|---|
| public boolean isWebSocketEnabled() Return whether WebSocket transport is enabled. | |
| sendMethodNotAllowed | back to summary |
|---|---|
| protected void sendMethodNotAllowed(ServerHttpResponse response, HttpMethod... httpMethods) | |
| setAllowedOriginPatterns | back to summary |
|---|---|
| public void setAllowedOriginPatterns(Collection<String> allowedOriginPatterns) Alternative to By default this is not set.
| |
| setAllowedOrigins | back to summary |
|---|---|
| public void setAllowedOrigins(Collection<String> allowedOrigins) Set the origins for which cross-origin requests are allowed from a browser.
Please, refer to By default, no origins are allowed. When
Note when SockJS is enabled and origins are restricted, transport types that do not allow to check request origin (Iframe based transports) are disabled. As a consequence, IE 6 to 9 are not supported when origins are restricted. | |
| setDisconnectDelay | back to summary |
|---|---|
| public void 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. | |
| setHeartbeatTime | back to summary |
|---|---|
| public void setHeartbeatTime(long heartbeatTime) Specify 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). | |
| setHttpMessageCacheSize | back to summary |
|---|---|
| public void 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 The default size is 100. | |
| setName | back to summary |
|---|---|
| public void setName(String name) Set a unique name for this service (mainly for logging purposes). | |
| setSessionCookieNeeded | back to summary |
|---|---|
| public void setSessionCookieNeeded(boolean sessionCookieNeeded) The SockJS protocol requires a server to respond to an 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 SockJS protocol also expects a SockJS service to echo back the JSESSIONID cookie when this property is set to true. However, when running in a Servlet container this is not necessary since the container takes care of it. 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. | |
| setSockJsClientLibraryUrl | back to summary |
|---|---|
| public void setSockJsClientLibraryUrl(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
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 | |
| setStreamBytesLimit | back to summary |
|---|---|
| public void 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). | |
| setSuppressCors | back to summary |
|---|---|
| public void setSuppressCors(boolean suppressCors) This option can be used to disable automatic addition of CORS headers for SockJS requests. The default value is "false".
| |
| setWebSocketEnabled | back to summary |
|---|---|
| public void setWebSocketEnabled(boolean webSocketEnabled) Some load balancers do not support WebSocket. This option can be used to disable the WebSocket transport on the server side. The default value is "true". | |
| shouldSuppressCors | back to summary |
|---|---|
| public boolean shouldSuppressCors() Return if automatic addition of CORS headers has been disabled.
| |
| validatePath | back to summary |
|---|---|
| private boolean validatePath(ServerHttpRequest request) Ensure the path does not contain a file extension, either in the filename (e.g. "/jsonp.bat") or possibly after path parameters ("/jsonp;Setup.bat") which could be used for RFD exploits. Since the last part of the path is expected to be a transport type, the presence of an extension would not work. All we need to do is check if there are any path parameters, which would have been removed from the SockJS path during request mapping, and if found reject the request. | |
| validateRequest | back to summary |
|---|---|
| protected boolean validateRequest(String serverId, String sessionId, String transport) | |
| Modifier and Type | Field and Description |
|---|---|
| private static final String |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public void |
| IFRAME_CONTENT | back to summary |
|---|---|
| private static final String IFRAME_CONTENT | |
| IframeHandler | back to summary |
|---|---|
| private IframeHandler() | |
| handle | back to summary |
|---|---|
| public void handle(ServerHttpRequest request, ServerHttpResponse response) throws IOException Implements org.
| |
| Modifier and Type | Field and Description |
|---|---|
| private static final String |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public void |
| INFO_CONTENT | back to summary |
|---|---|
| private static final String INFO_CONTENT | |
| InfoHandler | back to summary |
|---|---|
| private InfoHandler() | |
| handle | back to summary |
|---|---|
| public void handle(ServerHttpRequest request, ServerHttpResponse response) throws IOException Implements org.
| |
| Modifier and Type | Method and Description |
|---|---|
| public void |
| handle | back to summary |
|---|---|
| public void handle(ServerHttpRequest request, ServerHttpResponse response) throws IOException | |