Class AbstractClientSockJsSession
- java.lang.Object
- org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession
- All Implemented Interfaces:
Closeable
,AutoCloseable
,WebSocketSession
- Direct Known Subclasses:
WebSocketClientSockJsSession
,XhrClientSockJsSession
public abstract class AbstractClientSockJsSession extends Object implements WebSocketSession
Base class for SockJS client implementations ofWebSocketSession
. 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
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, SettableListenableFuture<WebSocketSession> connectFuture)
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
afterTransportClosed(CloseStatus closeStatus)
void
close()
Close the WebSocket connection with status 1000, i.e.void
close(CloseStatus status)
Close the WebSocket connection with the given close status.protected void
closeInternal(CloseStatus status)
protected abstract void
disconnect(CloseStatus status)
Map<String,Object>
getAttributes()
Return the map with attributes associated with the WebSocket session.HttpHeaders
getHandshakeHeaders()
Return the headers used in the handshake request (nevernull
).String
getId()
Return a unique session identifier.SockJsMessageCodec
getMessageCodec()
Principal
getPrincipal()
Return aPrincipal
instance containing the name of the authenticated user.URI
getUri()
Return the URI used to open the WebSocket connection.WebSocketHandler
getWebSocketHandler()
void
handleFrame(String payload)
void
handleTransportError(Throwable error)
boolean
isDisconnected()
boolean
isOpen()
Return whether the connection is still open.protected abstract void
sendInternal(TextMessage textMessage)
void
sendMessage(WebSocketMessage<?> message)
Send a WebSocket message: eitherTextMessage
orBinaryMessage
.String
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
Constructor Detail
AbstractClientSockJsSession
protected AbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, SettableListenableFuture<WebSocketSession> connectFuture)
Method Detail
getId
public String getId()
Description copied from interface:WebSocketSession
Return a unique session identifier.- Specified by:
getId
in interfaceWebSocketSession
getUri
public URI getUri()
Description copied from interface:WebSocketSession
Return the URI used to open the WebSocket connection.- Specified by:
getUri
in interfaceWebSocketSession
getHandshakeHeaders
public HttpHeaders getHandshakeHeaders()
Description copied from interface:WebSocketSession
Return the headers used in the handshake request (nevernull
).- Specified by:
getHandshakeHeaders
in interfaceWebSocketSession
getAttributes
public Map<String,Object> 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
public Principal 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
public SockJsMessageCodec getMessageCodec()
getWebSocketHandler
public WebSocketHandler getWebSocketHandler()
isOpen
public boolean isOpen()
Description copied from interface:WebSocketSession
Return whether the connection is still open.- Specified by:
isOpen
in interfaceWebSocketSession
isDisconnected
public boolean isDisconnected()
sendMessage
public final void sendMessage(WebSocketMessage<?> message) throws IOException
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:
ConcurrentWebSocketSessionDecorator
sendInternal
protected abstract void sendInternal(TextMessage textMessage) throws IOException
- Throws:
IOException
close
public final void close() throws IOException
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
public final void close(CloseStatus status) throws IOException
Description copied from interface:WebSocketSession
Close the WebSocket connection with the given close status.- Specified by:
close
in interfaceWebSocketSession
- Throws:
IOException
closeInternal
protected void closeInternal(CloseStatus status) throws IOException
- Throws:
IOException
disconnect
protected abstract void disconnect(CloseStatus status) throws IOException
- Throws:
IOException
handleFrame
public void handleFrame(String payload)
handleTransportError
public void handleTransportError(Throwable error)
afterTransportClosed
public void afterTransportClosed(@Nullable CloseStatus closeStatus)