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
.
Sub-classes implement actual send as well as disconnect logic.- Since:
- 4.1
- Author:
- Rossen Stoyanchev, Juergen Hoeller
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractClientSockJsSession
(TransportRequest request, WebSocketHandler handler, SettableListenableFuture<WebSocketSession> connectFuture) -
Method Summary
Modifier and TypeMethodDescriptionvoid
afterTransportClosed
(CloseStatus closeStatus) final void
close()
Close the WebSocket connection with status 1000, i.e.final void
close
(CloseStatus status) Close the WebSocket connection with the given close status.protected void
closeInternal
(CloseStatus status) protected abstract void
disconnect
(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 aPrincipal
instance containing the name of the authenticated user.getUri()
Return the URI used to open the WebSocket connection.void
handleFrame
(String payload) void
handleTransportError
(Throwable error) boolean
boolean
isOpen()
Whether the underlying connection is open.protected abstract void
sendInternal
(TextMessage textMessage) final void
sendMessage
(WebSocketMessage<?> message) Send a WebSocket message: eitherTextMessage
orBinaryMessage
.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.web.socket.WebSocketSession
getAcceptedProtocol, getBinaryMessageSizeLimit, getExtensions, getLocalAddress, getRemoteAddress, getTextMessageSizeLimit, setBinaryMessageSizeLimit, setTextMessageSizeLimit
-
Field Details
-
logger
-
-
Constructor Details
-
AbstractClientSockJsSession
protected AbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, SettableListenableFuture<WebSocketSession> connectFuture)
-
-
Method Details
-
getId
Description copied from interface:WebSocketSession
Return a unique session identifier.- Specified by:
getId
in interfaceWebSocketSession
-
getUri
Description copied from interface:WebSocketSession
Return the URI used to open the WebSocket connection.- Specified by:
getUri
in interfaceWebSocketSession
-
getHandshakeHeaders
Description copied from interface:WebSocketSession
Return the headers used in the handshake request (nevernull
).- Specified by:
getHandshakeHeaders
in interfaceWebSocketSession
-
getAttributes
Description copied from interface:WebSocketSession
Return 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 viaWebSocketClient
handshake methods.- Specified by:
getAttributes
in interfaceWebSocketSession
- Returns:
- a Map with the session attributes (never
null
)
-
getPrincipal
Description copied from interface:WebSocketSession
Return aPrincipal
instance containing the name of the authenticated user.If the user has not been authenticated, the method returns
null
.- Specified by:
getPrincipal
in interfaceWebSocketSession
-
getMessageCodec
-
getWebSocketHandler
-
isOpen
public boolean isOpen()Description copied from interface:WebSocketSession
Whether the underlying connection is open.- Specified by:
isOpen
in interfaceWebSocketSession
-
isDisconnected
public boolean isDisconnected() -
sendMessage
Description copied from interface:WebSocketSession
Send a WebSocket message: eitherTextMessage
orBinaryMessage
.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
WebSocketSession
with theConcurrentWebSocketSessionDecorator
.- Specified by:
sendMessage
in interfaceWebSocketSession
- Throws:
IOException
- See Also:
-
sendInternal
- Throws:
IOException
-
close
Description copied from interface:WebSocketSession
Close the WebSocket connection with status 1000, i.e. equivalent to:session.close(CloseStatus.NORMAL);
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceWebSocketSession
- Throws:
IOException
-
close
Description copied from interface:WebSocketSession
Close the WebSocket connection with the given close status.- Specified by:
close
in interfaceWebSocketSession
- Throws:
IOException
-
closeInternal
- Throws:
IOException
-
disconnect
- Throws:
IOException
-
handleFrame
-
handleTransportError
-
afterTransportClosed
-
toString
-