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 protectedAbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler, SettableListenableFuture<WebSocketSession> connectFuture)
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidafterTransportClosed(CloseStatus closeStatus)voidclose()Close the WebSocket connection with status 1000, i.e.voidclose(CloseStatus status)Close the WebSocket connection with the given close status.protected voidcloseInternal(CloseStatus status)protected abstract voiddisconnect(CloseStatus status)Map<String,Object>getAttributes()Return the map with attributes associated with the WebSocket session.HttpHeadersgetHandshakeHeaders()Return the headers used in the handshake request (nevernull).StringgetId()Return a unique session identifier.SockJsMessageCodecgetMessageCodec()PrincipalgetPrincipal()Return aPrincipalinstance containing the name of the authenticated user.URIgetUri()Return the URI used to open the WebSocket connection.WebSocketHandlergetWebSocketHandler()voidhandleFrame(String payload)voidhandleTransportError(Throwable error)booleanisDisconnected()booleanisOpen()Return whether the connection is still open.protected abstract voidsendInternal(TextMessage textMessage)voidsendMessage(WebSocketMessage<?> message)Send a WebSocket message: eitherTextMessageorBinaryMessage.StringtoString()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:WebSocketSessionReturn a unique session identifier.- Specified by:
getIdin interfaceWebSocketSession
getUri
public URI getUri()
Description copied from interface:WebSocketSessionReturn the URI used to open the WebSocket connection.- Specified by:
getUriin interfaceWebSocketSession
getHandshakeHeaders
public HttpHeaders getHandshakeHeaders()
Description copied from interface:WebSocketSessionReturn the headers used in the handshake request (nevernull).- Specified by:
getHandshakeHeadersin interfaceWebSocketSession
getAttributes
public Map<String,Object> 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
public Principal 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
public SockJsMessageCodec getMessageCodec()
getWebSocketHandler
public WebSocketHandler getWebSocketHandler()
isOpen
public boolean isOpen()
Description copied from interface:WebSocketSessionReturn whether the connection is still open.- Specified by:
isOpenin interfaceWebSocketSession
isDisconnected
public boolean isDisconnected()
sendMessage
public final void sendMessage(WebSocketMessage<?> message) throws IOException
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:
ConcurrentWebSocketSessionDecorator
sendInternal
protected abstract void sendInternal(TextMessage textMessage) throws IOException
- Throws:
IOException
close
public final void close() throws IOException
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
public final void close(CloseStatus status) throws IOException
Description copied from interface:WebSocketSessionClose the WebSocket connection with the given close status.- Specified by:
closein 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(CloseStatus closeStatus)