Class AbstractClientSockJsSession
java.lang.Object
org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession
- All Implemented Interfaces:
Closeable,AutoCloseable,WebSocketSession
- Direct Known Subclasses:
WebSocketClientSockJsSession,XhrClientSockJsSession
Base class for SockJS client implementations of
WebSocketSession.
Provides processing of incoming SockJS message frames and delegates lifecycle
events and messages to the (application) WebSocketHandler.
Subclasses implement actual send as well as disconnect logic.
- Since:
- 4.1
- Author:
- Rossen Stoyanchev, Juergen Hoeller
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, CompletableFuture<WebSocketSession> connectFuture) protectedAbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, SettableListenableFuture<WebSocketSession> connectFuture) Deprecated, for removal: This API element is subject to removal in a future version. -
Method Summary
Modifier and TypeMethodDescriptionvoidafterTransportClosed(CloseStatus closeStatus) final voidclose()Close the WebSocket connection with status 1000, i.e.final voidclose(CloseStatus status) Close the WebSocket connection with the given close status.protected voidcloseInternal(CloseStatus status) protected abstract voiddisconnect(CloseStatus status) Return the map with attributes associated with the WebSocket session.Return the headers used in the handshake request (nevernull).getId()Return a unique session identifier.Return aPrincipalinstance containing the name of the authenticated user.getUri()Return the URI used to open the WebSocket connection.voidhandleFrame(String payload) voidhandleTransportError(Throwable error) booleanbooleanisOpen()Whether the underlying connection is open.protected abstract voidsendInternal(TextMessage textMessage) final voidsendMessage(WebSocketMessage<?> message) Send a WebSocket message: eitherTextMessageorBinaryMessage.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.web.socket.WebSocketSession
getAcceptedProtocol, getBinaryMessageSizeLimit, getExtensions, getLocalAddress, getRemoteAddress, getTextMessageSizeLimit, setBinaryMessageSizeLimit, setTextMessageSizeLimit
-
Field Details
-
logger
-
-
Constructor Details
-
AbstractClientSockJsSession
@Deprecated(since="6.0", forRemoval=true) protected AbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, SettableListenableFuture<WebSocketSession> connectFuture) Deprecated, for removal: This API element is subject to removal in a future version.as of 6.0, in favor ofAbstractClientSockJsSession(TransportRequest, WebSocketHandler, CompletableFuture)Create a newAbstractClientSockJsSession. -
AbstractClientSockJsSession
protected AbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, CompletableFuture<WebSocketSession> connectFuture)
-
-
Method Details
-
getId
Description copied from interface:WebSocketSessionReturn a unique session identifier.- Specified by:
getIdin interfaceWebSocketSession
-
getUri
Description copied from interface:WebSocketSessionReturn the URI used to open the WebSocket connection.- Specified by:
getUriin interfaceWebSocketSession
-
getHandshakeHeaders
Description copied from interface:WebSocketSessionReturn the headers used in the handshake request (nevernull).- Specified by:
getHandshakeHeadersin interfaceWebSocketSession
-
getAttributes
Description copied from interface:WebSocketSessionReturn the map with attributes associated with the WebSocket session.On the server side the map can be populated initially through a
HandshakeInterceptor. On the client side the map can be populated viaWebSocketClienthandshake methods.- Specified by:
getAttributesin interfaceWebSocketSession- Returns:
- a Map with the session attributes (never
null)
-
getPrincipal
Description copied from interface:WebSocketSessionReturn aPrincipalinstance containing the name of the authenticated user.If the user has not been authenticated, the method returns
null.- Specified by:
getPrincipalin interfaceWebSocketSession
-
getMessageCodec
-
getWebSocketHandler
-
isOpen
public boolean isOpen()Description copied from interface:WebSocketSessionWhether the underlying connection is open.- Specified by:
isOpenin interfaceWebSocketSession
-
isDisconnected
public boolean isDisconnected() -
sendMessage
Description copied from interface:WebSocketSessionSend a WebSocket message: eitherTextMessageorBinaryMessage.Note: The underlying standard WebSocket session (JSR-356) does not allow concurrent sending. Therefore, sending must be synchronized. To ensure that, one option is to wrap the
WebSocketSessionwith theConcurrentWebSocketSessionDecorator.- Specified by:
sendMessagein interfaceWebSocketSession- Throws:
IOException- See Also:
-
sendInternal
- Throws:
IOException
-
close
Description copied from interface:WebSocketSessionClose the WebSocket connection with status 1000, i.e. equivalent to:session.close(CloseStatus.NORMAL);
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceWebSocketSession- Throws:
IOException
-
close
Description copied from interface:WebSocketSessionClose the WebSocket connection with the given close status.- Specified by:
closein interfaceWebSocketSession- Throws:
IOException
-
closeInternal
- Throws:
IOException
-
disconnect
- Throws:
IOException
-
handleFrame
-
handleTransportError
-
afterTransportClosed
-
toString
-
AbstractClientSockJsSession(TransportRequest, WebSocketHandler, CompletableFuture)